• java实现屏幕截屏功能


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

  • 相关阅读:
    5.2 i++
    5.1 赋值语句
    Implement Queue using Stacks
    Binary Tree Paths
    Single Number III
    Ugly Number
    SurfaceHolder.Callback
    intellj(idea) 编译项目时在warnings 页签框里 报 “xxx包不存在” 或 “找不到符号” 或 “未结束的字符串字面值” 或 “需要)” 或 “需要;”等错误提示
    Hibernate添加日志--log4j
    java实现网页验证码
  • 原文地址:https://www.cnblogs.com/zhangdiIT/p/8134886.html
Copyright © 2020-2023  润新知