使用toDataURL()从Canvas导出时如何压缩.png图像?

时间:2014-09-25 22:51:20

标签: javascript html5 canvas png todataurl

需要使用HTML5画布生成大约约20k的.png图像。不幸的是,在使用toDataURL()方法创建.png时,您无法像使用jpegs那样指定质量。

任何解决方法的想法? toDataURL似乎是从Canvas生成图像的唯一方法,而canvas似乎是没有服务器交互的图像处理的最佳工具。感谢任何建议。

2 个答案:

答案 0 :(得分:2)

有一种方法可以使用无损zlib deflate进程http://www.w3.org/TR/PNG-Compression.html对PNG图像进行压缩。当图像类型为' image / png'时,有一个库(https://github.com/ShyykoSerhiy/canvas-png-compression)为HTMLCanvasElement.toDataURL()提供垫片。并能够提供“质量”的能力。作为png的HTMLCanvasElement.toDataURL()的第二个参数。

请注意,它仅在Chrome中提供更好的结果(更小的尺寸)。 Firefox有时比canvas-png-compression具有更好的压缩效果(0.0.3版本)。

答案 1 :(得分:1)

您可以通过缩小缩放然后再将其缩放来执行某些操作。

  • 通过在较小的画布上绘制它来缩小,然后获取数据URL。

  • 创建一个图像对象,将数据网址设置为源。

  • 使用此img对象在原始画布上绘图(显然在onload事件回调中)

  • 通过试验一下,找到画布的大小比例,为您提供最佳效果。