使用PIL保存Progressive 2megapixel + Jpeg时获取“编码器错误-2”

时间:2012-05-28 19:42:02

标签: python python-imaging-library

我正在尝试使用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。

有没有其他人遇到/解决过这类问题?

1 个答案:

答案 0 :(得分:0)

如果您使用pip安装了PIL,请将其卸下并安装枕头。枕头库带有边缘版本的PIL库。来自pip的PIL太旧了。如果您更新到枕头而不是PIL,则不必设置PIL.ImageFile.MAXBLOCK。它会自动处理。

如果您使用的git子模块只需将PIL源代码下载到repo中,请确保从GitHub下载最新的源代码并使用它。