1

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

但是,即使使用上述方法增加 PIL 的 Maxblock 后,我的脚本仍然会抛出“编码器错误 -2”。我也尝试过让 MAXBLOCK 变得非常大,但也没有运气:

PIL.ImageFile.MAXBLOCK = 2048 ** 10

我正在尝试处理的图像相当大(2048 x 2048),但我不敢相信它们对于 PIL 来说太大而无法处理。

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

4

1 回答 1

0

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

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

于 2013-09-10T10:37:20.963 回答