我有(主要)离线网络应用,用户可以使用此图书馆签名(使用此库:https://github.com/szimek/signature_pad)
签名的图像大小约为50K,并作为base64编码的json字符串发送到服务器。
由于此数据是通过卫星发送的,因此我希望尽量减少每个签名使用的带宽。
是否有任何JavaScript库可以对PNG进行有损压缩以减小文件大小?
答案 0 :(得分:1)
PNG本质上是无损的。如果目的地可以接受,请使用JPEG。
如果没有,您可以尝试自己抽取图像,然后使用PNG无损压缩它。您还可以尝试将PNG-8模式压缩为256或更少颜色的调色板(这可能需要一个有损的步骤),这将导致较小的文件。
答案 1 :(得分:0)
我知道这是一个非常古老的问题,但我有一些可能有所帮助。我假设签名板库使用本机Canvas.toDataURL函数。
我看了一个使用pngcheck实用程序从画布保存的png,它使用RGBA - 每个像素4个字节。为了您的目的,您可以使用灰度或调色板颜色png,它将是一个小得多的尺寸,但仍然是无损的。
大(2192 x 2800)灰度PNG:39KB
相同的PNG绘制到Canvas(通过DrawImage),然后通过toDataURL保存回图像:184 KB。
此外,PNG中的数据是使用DEFLATE方法存储的 - 像this one这样的库可以将压缩级别作为参数,基本上是大小的交易速度。