java实现屏幕截屏功能
2024-09-03 22:50:52
最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用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结合使用的,其实核心代码是截图工具类,大家可以选择性的使用。
最新文章
- Matlab中^2和.^2的区别
- javascript小技巧(非常全)
- app安装位置声明
- 计算机视觉:关于视觉算法源码中常出现的imageLib库的使用指南
- [水煮 ASP.NET Web API2 方法论](3-2)直接式路由/属性路由
- android自动填写短信验证码
- 使用Unity3D自带动画系统制作下雨效果
- mysql修改主键
- King(差分约束)
- Manor
- Visual Studio 2015开发Android App问题集锦
- ios--图片处理(修改、保存)UIGraphicsBeginImageContext
- getchar()与EOF
- FbinstTool(U盘启动盘制作工具) v1.606 免费绿色版
- 简易仿ios菊花加载loading图
- linux下执行QT可执行文件报错
- SQL Server索引误区使用建议
- centos6.x完全禁用IPv6的方法
- JavaScript基础视频教程总结(041-050章)
- 2.git使用之git fetch和git push的区别
热门文章
- 在Mac如何启动MySQL
- spring boot 之注册
- delphi 运算符重载
- Spring Boot 教程系列学习
- mariadb galera群集故障记录
- Python classes to extract information from the Linux kernel /proc files.
- Spring Cloud微服务安全实战- 2-1 环境安装
- 【微信开发】微信小程序通过经纬度计算两地距离php代码实现
- 用python画 pareto front
- PAT 甲级 1066 Root of AVL Tree (25 分)(快速掌握平衡二叉树的旋转,内含代码和注解)***