最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用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结合使用的,其实核心代码是截图工具类,大家可以选择性的使用。

最新文章

  1. Matlab中^2和.^2的区别
  2. javascript小技巧(非常全)
  3. app安装位置声明
  4. 计算机视觉:关于视觉算法源码中常出现的imageLib库的使用指南
  5. [水煮 ASP.NET Web API2 方法论](3-2)直接式路由/属性路由
  6. android自动填写短信验证码
  7. 使用Unity3D自带动画系统制作下雨效果
  8. mysql修改主键
  9. King(差分约束)
  10. Manor
  11. Visual Studio 2015开发Android App问题集锦
  12. ios--图片处理(修改、保存)UIGraphicsBeginImageContext
  13. getchar()与EOF
  14. FbinstTool(U盘启动盘制作工具) v1.606 免费绿色版
  15. 简易仿ios菊花加载loading图
  16. linux下执行QT可执行文件报错
  17. SQL Server索引误区使用建议
  18. centos6.x完全禁用IPv6的方法
  19. JavaScript基础视频教程总结(041-050章)
  20. 2.git使用之git fetch和git push的区别

热门文章

  1. 在Mac如何启动MySQL
  2. spring boot 之注册
  3. delphi 运算符重载
  4. Spring Boot 教程系列学习
  5. mariadb galera群集故障记录
  6. Python classes to extract information from the Linux kernel /proc files.
  7. Spring Cloud微服务安全实战- 2-1 环境安装
  8. 【微信开发】微信小程序通过经纬度计算两地距离php代码实现
  9. 用python画 pareto front
  10. PAT 甲级 1066 Root of AVL Tree (25 分)(快速掌握平衡二叉树的旋转,内含代码和注解)***