在toDataURL之前缩放图像 - html2canvas

时间:2015-02-20 17:52:25

标签: javascript html css resize html2canvas

在你告诉我这是一个重复的问题之前,请知道我已经搜索了每个单个类似的问题,并且的答案中的任何一个都在努力我

我使用 html2canvas 来抓取div的快照,我需要做的是将其扩展到 750x1050 ,然后通过{{1将其保存到png }}

我最接近的是以下代码。

canvas.toDataURL()

图像尺寸合适但图像中的文字质量非常差,就好像它成为png后一样。

我做错了什么,或者你不能这样扩大规模?

非常感谢任何建议/解决方案!

3 个答案:

答案 0 :(得分:3)

对于其他任何想知道如何从html获得高分辨率打印内容的人:PhantomJSwkhtmltopdf / wkhtmltoimage是更好地处理这些事情的替代方案。

答案 1 :(得分:2)

我有类似的问题,这就是我最终做的事情

html2canvas($('#div_id'), {width: 750, height: 1050}).then(
    function(canvas) {
       window.open(canvas.toDataURL("image/png"));
    }
)

现在这仍然会导致图像模糊(尤其是文字),但这是因为浏览器上的默认缩放设置为110%,导致window.devicePixelRatio为1.1000 ......我只是通过显示警告对其进行排序对于用户(为了我需要的目的工作),但显然有更好的方法来解决它https://stackoverflow.com/a/22819006/460586

答案 2 :(得分:0)

即使我的图像都是像素化的,当有大量内容适合预先设定的宽度和高度时,有时也会变得狭窄。 经过几个小时的搜索,找到了一个很好的解决方案post。即使在缩放和没有可见像素化的情况下,它也能很好地保持分辨率。

html2canvas(document.getElementById('div_id'), {
onrendered: function(canvas) {
        var ctx = canvas.getContext('2d');
        ctx.webkitImageSmoothingEnabled = false;
        ctx.mozImageSmoothingEnabled = false;
        ctx.imageSmoothingEnabled = false;
        var myImage = canvas.toDataURL("image/jpeg,1.0");  
       }
 });