博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
html2canvas网页截图不清晰问题
阅读量:7116 次
发布时间:2019-06-28

本文共 1199 字,大约阅读时间需要 3 分钟。

hot3.png

原因分析:

浏览器window中的devicePixelRatio属性决定了浏览器会用几个像素点来渲染一个像素,假设devicePixelRatio=2,在retina屏下,会用2个像素点的宽度去渲染canvas的1个像素点,因此该canvas在retina屏幕上实际占据的宽高放大了一倍,因此图片会变得模糊。

解决:我们可以放大canvas的坐标系,然后缩小其显示的宽高

var getPixelRatio = function(context) {	var backingStore = context.backingStorePixelRatio ||		context.webkitBackingStorePixelRatio ||    	context.mozBackingStorePixelRatio ||    	context.msBackingStorePixelRatio ||    	context.oBackingStorePixelRatio ||    	context.backingStorePixelRatio || 1;	return (window.devicePixelRatio || 1) / backingStore;};var canvas = document.createElement('canvas');var context = canvas.getContext('2d');var scaleBy = getPixelRatio(context);var w = 500;var h = 500;canvas.width = w * scaleBy;canvas.height = h * scaleBy;canvas.style.width = w + 'px';canvas.style.height = h + 'px';context.scale(scaleBy, scaleBy);html2canvas(document.getElementById("posterImg"), {    canvas:canvas,    onrendered: function(canvas) {        var dataUrl = canvas.toDataURL();        var newImg = document.createElement("img");        newImg.src =  dataUrl;        newImg.width=w;        newImg.height=h;        $("body")[0].appendChild(newImg);    }});

 

转载于:https://my.oschina.net/u/879103/blog/760790

你可能感兴趣的文章
Android 开发知识小集
查看>>
函数调用堆栈 涉及汇编(转)
查看>>
比遇见什么样的人更重要的,是先成为什么样的人
查看>>
LoadRunner ---协议分析
查看>>
day-11 进程
查看>>
vue中自定义指令的使用
查看>>
python generator用法
查看>>
[leetcode-191-Number of 1 Bits]
查看>>
java知识库
查看>>
【面试题】-100盏灯
查看>>
logger打印错误日志
查看>>
oracel数据库ORA-28001: the password has expired
查看>>
oracle中根据表查出与表有关联的触发器
查看>>
删除ubuntu自带软件 及 WPS 安装(转)WPS字体已备份
查看>>
启用了不安全的HTTP方法【转】
查看>>
016 设计模式之代理模式
查看>>
NOD 1113矩阵快速幂
查看>>
Accurately Say "CocaCola"!(找规律+打表)
查看>>
php抓取网页特定div区块及图片,从简单入手
查看>>
MAX SUM
查看>>