谢谢你的图书馆! 我要注意的一件事是,使用视网膜显示器时屏幕截图模糊。 例如,这是https://github.com/niklasvh/html2canvas的屏幕截图在视网膜显示屏上的样子(从测试页截取)。
我认为也许需要检查画布渲染中某处window.devicePixelRatio
和context.backingStorePixelRatio
之间的比率...?
ps这是我试图弄清问题根源时遇到的一些有用链接。
这个库很棒,但是也有经验。 我认为这与#379,#373,#340,#203,#312和#158和#390中提到的问题相同。
有任何更新吗?
不固定
:+1:
+1请修正
+1缩放和缩放CSS样式不起作用吗? 可以通过缩放html截屏来解决,它应该看起来更清晰
+1请修正
+1修复
@zqcloveping
兄弟,尝试此配置,不能解决100%的问题,但可以提高质量
html2canvas(document.getElementById('flag'),{
useCORS:是的,
allowTaint:是的,
letterRendering:true,
渲染:function(canvas){
var ctx = canvas.getContext('2d');
ctx.webkitImageSmoothingEnabled = false;
ctx.mozImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
},
});
@breim
兄弟,第3季为您提供帮助。但这似乎不太明显。视网膜设备出现渲染问题
请修复它!
+1请修正
请修复它,Orz
+1
显然,您可以使用现有的画布进行渲染(可以将其预先配置为在视网膜中显示)。
例:
var w = 1000;
var h = 1000;
var div = document.querySelector('#divtoconvert');
var canvas = document.createElement('canvas');
canvas.width = w*2;
canvas.height = h*2;
canvas.style.width = w + 'px';
canvas.style.height = h + 'px';
var context = canvas.getContext('2d');
context.scale(2,2);
html2canvas(div, { canvas: canvas }).then(function(canvas) {
// do what you want
});
@MisterLamb您的解决方案非常出色。
我也想要这个固定的
+1
+1修复
@MisterLamb我正在尝试您的解决方案,但似乎无法正常工作。 我用您的修复程序创建了这个小提琴,它似乎什么也没做-您知道我做错了吗? 您可以单击小提琴中的按钮,并允许下载多个文件以对其进行测试,然后查看它们在此实现中是否相同。
@MisterLamb啊刚刚更改为0.5.0-alpha1,效果更好,谢谢。 更新了
+1
@MisterLamb你是一个真正的天才,感谢分享...它挽救了我的一天
@MisterLamb你是最好的👍
@makc我也是! 获取空画布-如果不使用自己的画布,则渲染正确。
仅供参考-到目前为止, @ eKoopmans解决方案在测试中效果很好: https :
结束于#1087
@MisterLamb但是如何提高图像的分辨率?
当我尝试将此图像保存为96dpi时,我需要300+ dpi图像。 我该怎么做???
在最新版本v1.0.0-alpha.1中, @ shivtumca12可以使用scale
选项提高分辨率( scale: 2
将使分辨率从默认的96dpi翻倍)。
//缩放90%,然后再调用html2canvas,然后再缩放回100%。
document.body.style.zoom = '99%';
html2canvas(document.querySelector(“#content”),{allowTaint:false,widht:_width,height:_height})。然后(function(canvas){
// var pdf = new jsPDF('p','pt','a4');
// pdf.addImage(canvas.toDataURL("image/png"), 'PNG', 10, 10, 580, 0)
// pdf.save('Grafico.pdf');
var link = document.createElement('a');
link.href = canvas.toDataURL("image/png");
link.download = 'Dashboard.png';
document.body.appendChild(link);
link.click();
link.style.display = 'none';
document.body.removeChild(link)
document.body.style.zoom = '100%';
$('.preloader-wrapper').hide();
});
@MisterLamb上面的解决方案适用于html页面中的文本。 在显示文本时,它将出色地转换图像中的文本。 但是html页面的图像内容(图像)仍显示为模糊。 请告诉我如何解决。
图像对我来说还是模糊的。
window.devicePixelRatio = 2;
我把这个放在我做html2canvas之前,它对我有用
嗨,我想输入波斯文字utf8,但是字体失败
如何解决这个问题呢
为什么这张照片不知道?
最有用的评论
显然,您可以使用现有的画布进行渲染(可以将其预先配置为在视网膜中显示)。
例: