Python图像库(PIL),如何将图像压缩成所需的文件大小?

Python图像库(PIL),如何将图像压缩成所需的文件大小?,第1张

Python图像库(PIL),如何将图像压缩成所需的文件大小?

JPEG压缩事先无法预测。您所描述的方法,压缩和测量并重试,是我知道的唯一方法。

您可以尝试压缩具有不同质量设置的许多典型图像,以了解最佳起点,以及猜测设置的更改将如何影响尺寸的方法。这样一来,您无需进行太多迭代即可将最佳尺寸归零。

您还可以将类似文件的对象传递给

save
无需费心写到磁盘的函数,只需计算字节数即可。确定最佳设置后,即可将其再次保存到实际文件中。

编辑:这是一个合适的字节计数文件对象的实现。

size
保存后只需检查即可。

class file_counter(object):    def __init__(self):        self.position = self.size = 0    def seek(self, offset, whence=0):        if whence == 1: offset += self.position        elif whence == 2: offset += self.size        self.position = min(offset, self.size)    def tell(self):        return self.position    def write(self, string):        self.position += len(string)        self.size = max(self.size, self.position)

编辑2:这是使用以上方法的二进制搜索,以

quality
最小的尝试次数获得最佳结果。

def smaller_than(im, size, guess=70, subsampling=1, low=1, high=100):    while low < high:        counter = file_counter()        im.save(counter, format='JPEG', subsampling=subsampling, quality=guess)        if counter.size < size: low = guess        else: high = guess - 1        guess = (low + high + 1) // 2    return low


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5645098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存