如何缩放/优化/最小化输出图像,使其低于某个最大文件大小? (输入源是不同的 - PDF,JPEG,GIF,TIFF ...)ImageMagick:具有最大文件大小的缩放PNG图像
我已经看了很多地方,但无法找到这个问题的答案。
在ImageMagick的一个JPEG输出可以与extent
做到这一点(见例如ImageMagick: scale JPEG image with a maximum file-size),但似乎没有成为其他的文件格式例如等效PNG。
我可以在一个循环中使用魔杖或PIL(首选python),直到文件大小低于某个值,但对于1000个图像,这将有一个大的I/O开销,除非有一种方法来预测/文件大小没有先写出来。也许这是唯一的选择。
我也可以换不同的(MacOS的)命令行工具的蟒蛇。
此外,我只希望做任何压缩在所有的地方是绝对必要的(源主要是文本),剩下的压缩算法的选择。
感谢您的帮助。
PS其他相关的问题:
Scale image according a maximum file size
Compress a PNG image with ImageMagick
python set maximum file size when converting (pdf) to jpeg using e.g. Wand
编辑:https://stackoverflow.com/a/40588202/1021819是相当接近过 - 虽然确切的代码也已经(不可避免的?),使一些关于如何减小文件大小的选择(resize
) )。没有多维搜索,也许没有通用的方法来做到这一点。
此外,由于输入文件是PDF文件,可以在此甚至可以用PIL做了什么?第一选择是关于光栅化,我一直在使用Wand。
https://stackoverflow.com/a/34618887/1021819也非常有用,因为它使用法杖,所以把二进制印章环内的操作似乎是前进的道路。
的可能的复制[Python的PIL:查找图像的大小,而无需编写它作为一个文件(https://stackoverflow.com/questions/40587343/python-pil-find-the-size-of-image-without将其作为文件) –
通过执行[二进制搜索](https://en.wikipedia.org/wiki/Binary_search_algorithm),可以相当快地放大正确的大小。您不需要将文件保存到磁盘,将其保存到'io.BytesIO()'。请注意,由PIL生成的PNG文件通常可以通过使用像[optipng](http://optipng.sourceforge.net)这样的PNG优化程序大大减少。 –
谢谢两个 - 超级有用 - 如果可能的话,我确实想从python驱动所有东西(而不是从它调用可执行文件) – jtlz2