我试图用下面的调用保存,但它会引发错误,但如果删除渐进式和优化选项,它会保存。
这是我的test.py,它不起作用:
import Image
img = Image.open("in.jpg")
img.save("out.jpg", "JPEG", quality=80, optimize=True, progressive=True)
它会引发此错误:
Suspension not allowed here
Traceback (most recent call last):
File "test.py", line 3, in <module>
img.save("out.jpg", "JPEG", quality=80, optimize=True, progressive=True)
File "/Library/Python/2.6/site-packages/PIL/Image.py", line 1439, in save
save_handler(self, fp, filename)
File "/Library/Python/2.6/site-packages/PIL/JpegImagePlugin.py", line 471, in _save
ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)])
File "/Library/Python/2.6/site-packages/PIL/ImageFile.py", line 501, in _save
raise IOError("encoder error %d when writing image file" % s)
IOError: encoder error -2 when writing image file
链接到图像:http://static.cafe.nov.ru/in.jpg(4.3 mb)
下面是一个可能有用的方法,但您可能需要使缓冲区更大:
如果您使用pip安装了PIL,请卸载它并安装枕头。枕头图书馆有边缘版本的皮尔图书馆与它。pip的PIL太旧了。如果更新到枕头而不是PIL,则不必设置PIL.ImageFile.MAXBLOCK。它是自动处理的。
如果您使用的git子模块只是将PIL源代码下载到repo中,请确保从GitHub下载并使用最新的源代码。
PIL一次对图像的一部分进行编码。这与“优化”和“渐进”选项不兼容。
编辑:您需要
import PIL.Image, PIL.ImageFile
更新版本的PIL/枕头。相关问题 更多 >
编程相关推荐