java 使用html2canvas实现屏幕截图

知识点参考:
http://www.cnblogs.com/dreammyle/p/4872574.html

案列:

前段使用jsp页面,处理代码为Controller层代码。
js插件:
1、jquery-2.1.4.min.js
2、html2canvas.js

<%@ page language="java" pageEncoding="UTF-8"%><html>
    <head>
    <script type="text/javascript" src="../../frame/js/jquery/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="../../frame/js/html2canvas.js"></script></head>
<body>
  <input type="button" class="button" value="屏幕截图" id="addPolyline" onclick="snapscreen()"/>
    <script type="text/javascript">
        function snapscreen(){
            html2canvas(document.body, {
                allowTaint: true, 
                taintTest: false,
                onrendered: function(canvas){
                    var dataUrl = canvas.toDataURL("image/png"); 
                    $.ajax({
                        url:'http://cmis:8080/cmisplat/snapCapture/snapscreen',
                        type:'POST',
                        data:{
                            base64ImgData : JSON.stringify(dataUrl)
                        },
                        success:function(msg){

                        },
                        error:function(XMLHttpRequest){
                            alert( "Error: " + XMLHttpRequest.responseText); 
                        }
                    });
                }
            });
        }
    </script>
</body>
</html>

Controller层代码:
注意:代码中使用到了sun.misc.BASE64Decoder类,在MyEclipse中会报错,需要进行几步操作:
第一步
这里写图片描述
第二步:选中Access rules,点击edit
这里写图片描述
第三步 选择Accessible **
这里写图片描述

import java.io.File;
import java.io.PrintWriter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import sun.misc.BASE64Decoder;

import com.newsoft.utils.JSONTool;

@Controller
@RequestMapping("/snapCapture")
public class SnapScreenController {

    @RequestMapping("/snapscreen")
    public void snapscreen(PrintWriter writer,String base64ImgData,
            Integer stationno,Integer laneno,Date ccollecttime,String recordid) {
        Map<String, Object> map = new HashMap<String, Object>();
        boolean flag = false;
        String msg = "截屏失败";

        try {
                //BASE64Decoder会报错,Myeclipse中需要开启对此类的使用
                BASE64Decoder d = new BASE64Decoder();
                //去掉头部声明
                base64ImgData = base64ImgData.substring(base64ImgData.indexOf(",")+1);
                byte[] bs = d.decodeBuffer(base64ImgData);
                String snapScreenPath = "F:\\screen.png";
                //保存图片到本地
                //org.apache.commons.io.FileUtils;
                FileUtils.writeByteArrayToFile(new File(snapScreenPath), bs);

        } catch (Exception e) {
            e.printStackTrace();
            flag = false;
            msg = "截屏失败!失败原因:" + e.getMessage();
        }

        map.put("success", flag);
        map.put("msg", msg);
        writer.write(JSONTool.toJson(map));
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值