Python PIL库无法使用 image.thumbnail(size, Image.ANTIALIAS)

0 投票
1 回答
1358 浏览
提问于 2025-04-17 18:44

我正在调试这个Python脚本,里面用到了PIL库中的Image、ImageChops和ImageOps。

我到处查找,问题似乎出在这里:“image.thumbnail(size, Image.ANTIALIAS)”。有没有人有什么想法?谢谢!

image = Image.open(f_in)
print "got here"
image.thumbnail(size, Image.ANTIALIAS)
print "cannot get here"
image_size = image.size
if pad:
    thumb = image.crop( (0, 0, size[0], size[1]) )

    offset_x = max( (size[0] - image_size[0]) / 2, 0 )
    offset_y = max( (size[1] - image_size[1]) / 2, 0 )

    thumb = ImageChops.offset(thumb, offset_x, offset_y)

else:
    thumb = ImageOps.fit(image, size, Image.ANTIALIAS, (0.5, 0.5))

thumb.save(f_out)

编辑 谢谢你快速的回答,Mark。我搞明白了。

我需要:

pip uninstall PIL
sudo apt-get install libjpeg8-dev 
pip install PIL

我没有安装libjpeg。不知道为什么没有报错。

1 个回答

1

如果程序没有到达“无法到达这里”这一行,那问题就出在 thumbnail 抛出了一个异常。你在问题中没有提到这一点,这应该会生成一个错误。

PIL(Python图像库)使用的是懒加载图片的方式——在 open 调用时,它可能会打开文件,但实际上并不会立即读取整个文件。如果你的文件损坏了或者格式不对,当你尝试对图片进行操作时,就会失败,就像 thumbnail 所做的那样。

撰写回答