【发布时间】:2019-08-09 19:10:46
【问题描述】:
我想将 SVG 渲染为 PNG。
我通过将 SVG 写入画布并将画布下载为 PNG 来做到这一点。
在具有视网膜显示屏和 devicePixelRatio !== 1 的设备上执行此操作时,会导致图像模糊。
当渲染到屏幕上时,这很容易解决,方法是通过属性放大画布,然后通过 CSS 缩小画布。
canvas.width = width * scale;
canvas.style.width = width;
但是,我想将画布下载为具有正确分辨率和大小的 PNG,我所能做的就是下载一个两倍于预期大小但在缩小时不模糊的 PNG 或一个正确大小的 PNG但是很模糊。
此Fiddle 显示了问题,请注意您需要在 devicePixelRatio !== 1 的机器上(如 MacBook Pro 或 iMac)。
【问题讨论】:
-
toDataURL 输出分辨率为 96dpi 的文件。有多种方法可以更改 dpi 值,例如:github.com/murkle/rewrite-png-pHYs-chunk 更改 dpi 会更改它在某些应用程序中的显示方式,但其他应用程序会忽略或覆盖 dpi。
标签: svg size png blurry devicepixelratio