我正在尝试使用PIL保存一些Progressive,Retina尺寸的图像,以便在iPad 3上使用,但仍然会收到问题标题中提到的“编码器错误-2”。
我知道这是一个已知的PIL + Jpeg问题,经过一些阅读后我听说可以通过在代码中添加类似的内容来解决:
import PIL
from PIL import ImageFile
from exceptions import IOError
try:
img.save("img.jpg", "JPEG" , quality=80, progressive=True)
except IOError:
PIL.ImageFile.MAXBLOCK = img.size[0] * img.size[1]
img.save("img.jpg", "JPEG" , quality=80, progressive=True)
然而,即使使用上述方法增加PIL的Maxblock,我的脚本仍会抛出“编码器错误-2”。我也试过让MAXBLOCK变得非常大,但是没有运气,或者:
PIL.ImageFile.MAXBLOCK = 2048 ** 10
我试图处理的图像相当大(2048 x 2048),但我不敢相信它们太大而无法处理PIL。
有没有其他人遇到/解决过这类问题?
答案 0 :(得分:0)
如果您使用pip安装了PIL,请将其卸下并安装枕头。枕头库带有边缘版本的PIL库。来自pip的PIL太旧了。如果您更新到枕头而不是PIL,则不必设置PIL.ImageFile.MAXBLOCK。它会自动处理。
如果您使用的git子模块只需将PIL源代码下载到repo中,请确保从GitHub下载最新的源代码并使用它。