html2canvas截图 图片另存并解决图片模糊问题

最近由于公司业务要求,需要完成一个HTML页面效果渲染后生成照片的功能,功能的核心是把HTML代码展现的内容转化为png或者jpg图片。接到这个任务的时候,我心里是一脸懵逼的,于是就上谷歌搜索插件,还真有一款名叫html2canvas的插件,我心想看来这任务还是挺简单的,那开始吧!

html2canvas

运行脚本,可以直接在用户浏览器上拍摄网页或其部分的“截图”。截图是基于DOM,因此并不是100%准确的真实表示,因为它是实际的截图,而是根据页面上可用的信息构建截图。(引用自html2canvas官网)

入门

html2canvas的简单调用:

// element是需要截图的元素
html2canvas(element,options);

可用选项(options)

参数名称类型默认值描述
allowTaintbooleanfalse允许跨域
useCORSbooleanfalse貌似与跨域有关,但和allowTaint不能共存
proxystringundefined代理地址
taintTestbooleantrue是否在渲染前测试图片
timeoutnumber0图片加载延迟,默认延迟为0,单位毫秒
loggingbooleanfalse在Console中输出信息
widthnumbernullcanvas的宽度设定
heightnumbernullcanvas的高度设定
backgroundstring#fffcanvas的背景颜色(未指定则为透明)
letterRenderingbooleanfalse在设置了字间距的时候有用

特别的是,html2canvas提供了回调事件--onrendered来渲染canvas:

html2canvas(element,{ 
    onrendered:function(canvas){ 
        // canvas是最终渲染的<canvas>元素
    } 
});
html2canvas(document.getElementById('view')).then(function(canvas) {
                                                    var myImage4 = canvas.toDataURL("image/jpeg",1.0);
                                                    //并将图片上传到服务器用作图片分享
                                                    var fileName4 = "ws_" + $("#period").val()+'_shouji';
                                                    $.ajax({
                                                        type : "POST",
                                                        url : ctx+'/portal/upload',
                                                        data : {data:myImage4,fileNAme:fileName4},
                                                        timeout : 60000,
                                                        success : function(data){
                                                            alert("静态资源文件生成完毕!");
                                                            mini.unmask(document.body);
                                                        }
                                                    });
                                                });

最原始效果图找不到了,放一张稍微有点对比性的吧,最原始截出来文字发虚,模糊度文字无法叙述:

html2canvas提供了scale属性可调整清晰度:

优化后效果图:

参数用法介绍:

参数名称

类型

默认值

描述

scalenumber1按比例增加分辨率 (2=双倍).
dpinumber96将分辨率提高到特定的DPI(每英寸点数)

html2canvas.js

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值