如果我使用pngquant压缩和成像,然后使用PIL读取和写出,我会看到文件大小显着增加(有时最多增加2倍)。这里有人有任何提示吗?我怀疑它可能与某些PIL标志有关,但对它不够熟悉。
答案 0 :(得分:3)
然后使用PIL读取和写出,我看到文件大小显着增加(有时最多增加2倍)
由于PNG是无损的,因此不会引入可能与其他编码器有关的工件,我只看到三种可能的可能性:
对于非常小文件,如果PIL重新添加count
删除的某些数据,则非图像块可能是问题的一部分。获取一些PNG诊断工具,能够转储所有块的列表和大小(PLTE,tEXT等),并查看实际增加的位置(Quick google link)。
zLib也可能是罪魁祸首(例如,如果内存服务,pngquant
使用欺骗的zlib来提高性能),但不是那些数字,除非我们说的是足够小的文件,即使是几个字节可能很重要。
答案 1 :(得分:0)
除非您修改任何RGBA或使用不同的settings保存,否则无论您使用的库或应用程序如何,读取和写入PNG几乎不会影响文件大小。
使用pngquant生成的图像和PIL的概念证明:
$ wget https://pngquant.org/Ducati_side_shadow-fs8.png
$ python
>>> from PIL import Image
>>> im = Image.open("Ducati_side_shadow-fs8.png")
>>> im.rotate(180).save("output.png")
$ stat -c "%s %n" *.png
23405 Ducati_side_shadow-fs8.png
23362 output.png
在上面的示例中,output.png
甚至比原始文件少43个字节。我们已经将它颠倒过来,但没有触及颜色或alpha。