Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript有损PNG图像压缩库_Javascript_Json_Compression - Fatal编程技术网

Javascript有损PNG图像压缩库

Javascript有损PNG图像压缩库,javascript,json,compression,Javascript,Json,Compression,我有一个(大部分)离线webapp,用户可以使用数字签名(使用此库:)注销 签名的图像大小约为50K,作为base64编码的json字符串发送到服务器 由于这些数据是通过卫星发送的,我希望将每个签名使用的带宽降至最低 是否有JavaScript库对PNG进行有损压缩以减小文件大小 PNG本质上是无损的。如果目标可以接受,请使用JPEG 如果没有,您可以尝试自己删除图像,然后用PNG无损压缩它。您也可以尝试使用PNG-8模式压缩到256色或更少颜色的调色板(这可能需要一个有损的步骤),这将产生一个

我有一个(大部分)离线webapp,用户可以使用数字签名(使用此库:)注销

签名的图像大小约为50K,作为base64编码的json字符串发送到服务器

由于这些数据是通过卫星发送的,我希望将每个签名使用的带宽降至最低


是否有JavaScript库对PNG进行有损压缩以减小文件大小

PNG本质上是无损的。如果目标可以接受,请使用JPEG


如果没有,您可以尝试自己删除图像,然后用PNG无损压缩它。您也可以尝试使用PNG-8模式压缩到256色或更少颜色的调色板(这可能需要一个有损的步骤),这将产生一个更小的文件。

我知道这是一个非常老的问题,但我有一些可能会有所帮助。我假设签名板库使用本机Canvas.toDataURL函数

我用pngcheck工具查看了一个从画布保存的png,它使用RGBA-每像素4字节。出于您的目的,您可以使用灰度或调色板颜色png,这将是一个更小的大小,但仍然无损

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

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


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

我认为没有这样的事情,但您可以将画布导出为jpeg,或者对PNG数据进行DEFLATE。