如果我使用pngquant压缩图像,然后使用PIL读取并写出,我发现文件大小显著增加(有时增加了2倍)。有没有什么建议?我怀疑可能与一些PIL标志有关,但对此不太熟悉。
pngquant
删除的数据,则非图像块可能是问题的一部分。获取一些PNG诊断工具,能够转储所有块(PLTE、tEXT等)的列表和大小,并查看实际增加发生的位置(Quick google link)。
可能也是zLib的问题(例如,如果记忆没有出错,advpng
使用了一个改进过的zlib来提高性能),但除非我们谈论的是足够小的文件,即使只有几个字节也可能很重要,否则不会出现这些数字。
除非您修改任何RGBA或使用不同的设置保存,无论您使用哪个库或应用程序,读写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 字节。我们将其倒置,但没有改变颜色或透明度。
open()
和save()
行是什么?如果在打开后没有进行任何修改直接保存,尺寸是否会增加相同? - hurturk