使用 PIL 保存渐进式 200 像素+ Jpeg 时出现“编码器错误 -2”



我正在尝试使用 PIL 保存一些渐进式、视网膜大小的图像以在 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)

但是,即使使用上述方法增加了太平船务的Maxblock,我的脚本仍然抛出"编码器错误-2"。我也尝试过将MAXBLOCK做得非常大,但也没有运气:

PIL.ImageFile.MAXBLOCK = 2048 ** 10

我尝试处理的图像相当大(2048 x 2048),但我不愿相信它们太大,PIL无法处理。

是否有其他人遇到/解决了此类问题?

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

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

最新更新