首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高质量画布drawImage - Javascript

高质量画布drawImage - Javascript
EN

Stack Overflow用户
提问于 2021-05-17 15:05:21
回答 2查看 414关注 0票数 2

我使用konva.js在HTML上绘制元素。当用户在画布中完成其设计时,可以将创建导出到PDF文件中。在这种情况下,我的HTML结构如下:

一个div“画布”来附加所有的画布( konva-canvas

  • an

  • a div "canvas0/canvas1“等等),最后添加每个自动生成的div "konvajs-content"

  • and,多个画布(取决于

的层数)。

因此,要导出PDF,我必须遍历每个div“画布+数字”,然后遍历每个画布childNodes,使用getContext('2d')和drawImage函数绘制一个包含每个画布内容的图像(希望这种描述不会太混乱……)。

我可以根据画布的数量导出多页的pdf,但是从画布上画出来的图像质量很低。最后,我的疑问是,我怎样才能以更高的质量出口?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-17 18:49:09

我有一个巧妙的办法来提高分辨率。step 1使您的画布大两倍于此:

代码语言:javascript
复制
canvas.width=innerWidth*2;
canvas.height=innerHeight*2;

要使画布覆盖整个宽度从css设置其宽度和高度,step 2如下所示:

代码语言:javascript
复制
canvas{ width:100%; }

就这样。最后,您将将图像分辨率提高一倍,并确保在css中使用width:100%;,而不是将其作为html中的属性。

希望这对你有用。

票数 1
EN

Stack Overflow用户

发布于 2021-05-18 13:36:09

如果您正在使用Konva,则应该使用它的方法进行导出。

代码语言:javascript
复制
stage.toDataURL()

如果要提高输出图像的质量,可以使用pixelRatio属性。

代码语言:javascript
复制
// it will produce 4x bigger image
stage.toDataURL({ pixelRatio: 2})

https://konvajs.org/docs/data_and_serialization/High-Quality-Export.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67572294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档