有损PNG图像压缩库

Javascript Lossy PNG image compression library

本文关键字:图像压缩 PNG 有损      更新时间:2023-09-26

我有一个(大部分)离线web应用程序,用户可以用数字签名签名(使用此库:https://github.com/szimek/signature_pad)

签名的图像大小约为50K,以base64编码的json字符串的形式发送给服务器。

由于这些数据是通过卫星发送的,我希望最小化每个签名使用的带宽。

是否有任何JavaScript库做有损压缩的PNG,以减少文件大小?

PNG本身就是无损的。如果目的地可以接受,请使用JPEG格式。

如果没有,您可以尝试自己删除图像,然后使用PNG对其进行无损压缩。您还可以尝试PNG-8模式,将调色板压缩为256种或更少的颜色(这可能需要有损步骤),这应该会导致更小的文件。

我知道这是一个非常古老的问题,但我有一些东西可能会有所帮助。我假设签名垫库使用原生画布。toDataURL函数。

我用pngcheck实用程序从画布上保存了一个png,它使用RGBA -每像素4字节。对于您的目的,您可以使用灰度或调色板颜色png,这将是一个小得多的大小,但仍然是无损的。

大(2192 x 2800)灰度PNG: 39KB

相同的PNG绘制到画布(通过DrawImage),然后通过toDataURL: 184 KB保存回图像。

此外,PNG中的数据是使用DEFLATE方法存储的-许多库,如这个库,将压缩级别作为参数,基本上是以速度换取大小。