最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用html网页写的,这时候想要分享给朋友的话只能用户自己手机截图,显然这样的用户体验是不友好的,如果可以给用户一个按钮实现一键截图的功能,那么便极大地方便了用户,有可能就是因为省了这一步而使得推广的效果变得更好。下面就讲一下如何使用java实现屏幕截屏的功能。

第一步:创建截屏工具类

import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO; /**
* 截屏工具类
* @author zhangdi
*
*/
public class CutPicUtil { /**
* 屏幕截图
* @param imageName 存储图片名称
* @param path 图片路径
* @param imgType 图片类型
* @throws AWTException
* @throws IOException
*/
public static void cutPic(String imageName,String path,String imgType) throws AWTException, IOException{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Rectangle screenRectangle = new Rectangle(screenSize);
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(screenRectangle);
ImageIO.write(image,imgType, new File(path+imageName+"."+imgType));
} }

第二步:在服务层调用截图工具类

    @Override
public Map<String, Object> ScreenshotImg(String imageName, String basePath,String path,
String imgType) {
Map<String, Object> map = new HashMap<String, Object>();
boolean flag = true;
String name = DateUtil.getNowDate(6)+RandomUtil.getRandomString(8);
try {
CutPicUtil.cutPic(name, basePath+path,imgType);
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag = false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
flag = false;
}
if(flag){
map.put("state","0");//截屏成功
map.put("path",path+name+"."+imgType);
}else{
map.put("state","1");//截屏失败
}
return map;
}

第三步:在控制层提供接口

    /**
* 屏幕截图
* @return
*/
@RequestMapping(value="cutPic" ,method=RequestMethod.POST)
@ResponseBody
public Map<String, Object> cutPic(HttpServletRequest request){
String imageName = DateUtil.getNowDate(6)+RandomUtil.getRandomString(6);
String basePath = request.getRealPath("/");
String path = "/static/img/Screenshotimg/";
return iManageService.ScreenshotImg(imageName,basePath,path, "jpg");
}

第四步:前台页面调用接口(这里使用原生js调用)

    <img id="jietu" width="300px" height="180px"></br>
<button id="jt">截屏</button>
<script type="text/javascript">
$("#jt").click(function(){
$.ajax({
url:"router/cutPic",
type:"post",
data:{},
success:function(data){
if(data.state=="0"){
alert("截屏成功");
$("#jietu").attr("src","/wxactive"+data.path);
}else{
alert("截图失败");
}
window.clearInterval(timer);
console.log(data);
},
error:function(e){
alert("错误!!");
window.clearInterval(timer);
}
});
});
</script>

效果:点击截屏提示截屏成功并展示出来

注意:我这里是跟springMVC结合使用的,其实核心代码是截图工具类,大家可以选择性的使用。

java实现屏幕截屏功能的更多相关文章

  1. Java实现网页截屏功能(基于phantomJs)

    公司最近有个需求:把用户第一次的测量身体信息和最近一次测量信息进行对比,并且需要把对比的数据截成图片可以发给用户(需要在不打开网页的情况下实时对网页进行截图然后保存到服务器上,返回图片地址),通过网上 ...

  2. android4.3 截屏功能的尝试与失败分析

    1.背景 上一篇讲了在源码中捕获到了android手机的截屏函数(同时按下电源键与音量减,详情http://blog.csdn.net/buptgshengod/article/details/199 ...

  3. Android自己定义截屏功能,相似QQ截屏

    由于公司业务需求 须要对一个屏幕进行截屏.但自带的截屏功能是远远不够项目的功能需求 ,我们是做一个画板软件 .须要的像QQ那样截屏之后 ,能够看到我们自己定义的工具.有画笔,button等等 .and ...

  4. Atitit截屏功能的设计解决方案

    Atitit截屏功能的设计解决方案 自己实现.... 使用快捷键.. 弹出自己的win,,背景是屏幕快照 点击鼠标光标变成十字状态 出现截屏窗口调整截屏窗口位置与大小 释放鼠标,三个btn,,  复制 ...

  5. DDGScreenShot — 复杂屏幕截屏(如view ScrollView webView wkwebView)

    写在前面 最近有这么一个需求,分享页面,分享的是web订单截图,既然是web 就会有超出屏幕的部分, 生成的图片还要加上我们的二维码,这就涉及到图片的合成了. 有了这样的需求,就是各种google.也 ...

  6. 【玩转cocos2d-x之三十九】Cocos2d-x 3.0截屏功能集成

    3.0的截屏和2.x的截屏基本上同样.都是利用RenderTexture来处理,在渲染之前调用call函数,然后调用Cocos的场景visit函数对其进行渲染,渲染结束后调用end函数就可以.仅仅是3 ...

  7. [置顶] Android 应用内禁止截屏功能的实现

    截图介绍   Android的调试工具DDMS提供有截屏功能,很多软件也会有截屏功能,在做支付等安全类应用的时候,为了保证用户的资产和系统安全,往往会禁止应用内截屏,禁止之后,在此应用处于前台的情况下 ...

  8. 小胖说事22-----iOS开发技巧之取消键盘响应和截屏功能

    1.UILable内容模糊 在非Retina的iPad mini 的屏幕上,一个UILable的frame的origin值假设是有小数位(如0.5),就会造成显示模糊,所以不妨用整数值的origin. ...

  9. c# wpf 利用截屏键实现截屏功能

    原文:c# wpf 利用截屏键实现截屏功能     最近做一个wpf程序需要截图功能,查找资料费了一些曲折,跟大家分享一下.     先是找到了这样一份代码:     static class Scr ...

随机推荐

  1. java使用递归遍历文件,使用内部类过滤文件,使用匿名内部类过滤文件

    public class TestFile { public static void main(String [] args) { //遍历文件夹中文件名称,若文件夹中还存有文件夹,递归读取文件夹名称 ...

  2. 读取本地word 浏览器下载(设置编码格式)

    String filePath = "C:\\word\\报告.doc"; BufferedWriter bos = null; BufferedReader bis = null ...

  3. CSS工作记录

    1:行内元素 设置背景图片(假设 给span) /*span 标签加背景图片 需要设置快级元素 定义高度宽度,当高度宽度很小的时候 需要设置背景图片大小*/ .filex { display: inl ...

  4. 如何快速关联/修改Git远程仓库地址

    如何快速关联/修改Git远程仓库地址?按照如下步骤即可快速实现关联/修改Git远程仓库地址: 删除本地仓库当前关联的无效远程地址,再为本地仓库添加新的远程仓库地址 git remote -v //查看 ...

  5. 登录注册页面模板汇总WEB前端(50套)

    土地指标管理系统入口登录页面 土地指标管理系统入口登录页面.zip: https://u18740809.pipipan.com/fs/18740809-382374353 紫色响应式登录页面模板 紫 ...

  6. make 实例 一 3463

    ######################################################################### # # Makefile used for buil ...

  7. css 文本省略号显示

    文本省略号是非常常见的需求,而省略号展示又通常分为俩种情况折行和不折行.不折行: div { white-space:nowrap;/* 规定文本是否折行 */ overflow: hidden;/* ...

  8. form表单文件上传提交且接口回调显示提交成功

    前端: <form method="post" enctype="multipart/form-data" id="formSubmit&quo ...

  9. 从0开始学爬虫9之requests库的学习之环境搭建

    从0开始学爬虫9之requests库的学习之环境搭建 Requests库的环境搭建 环境:python2.7.9版本 参考文档:http://2.python-requests.org/zh_CN/l ...

  10. 泡泡一分钟:Fast and Robust Initialization for Visual-Inertial SLAM

    张宁  Fast and Robust Initialization for Visual-Inertial SLAM链接:https://pan.baidu.com/s/1cdkuHdkSi9x7l ...