最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用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 MapScreenshotImg(String imageName, String basePath,String path, String imgType) { Map map = new HashMap (); 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 MapcutPic(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调用)
效果:点击截屏提示截屏成功并展示出来
注意:我这里是跟springMVC结合使用的,其实核心代码是截图工具类,大家可以选择性的使用。
posted on 2017-12-28 11:40 阅读( ...) 评论( ...)