需要使用HTML5画布生成大约约20k的.png图像。不幸的是,在使用toDataURL()方法创建.png时,您无法像使用jpegs那样指定质量。
任何解决方法的想法? toDataURL似乎是从Canvas生成图像的唯一方法,而canvas似乎是没有服务器交互的图像处理的最佳工具。感谢任何建议。
答案 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事件回调中)
通过试验一下,找到画布的大小比例,为您提供最佳效果。