我有相同的图像,其中一张是存储在我机器上的原始图像,另一张上传到 azure blob 存储并下载回我的本地机器。这是一段代码(Python 3.6.3、Pillow-SIMD 4.3.0post0、libjpeg-turbo、ubuntu 17.10/alpine docker 容器):
image_stream = open('src/app/resize/resizer/corrupted_blob.jpg', 'rb')
image = Image.open(image_stream)
image.load()
当解释器命中 .load 方法时会引发异常:OSError: image file is truncated (6 bytes not processed)
所以它只发生在corrupted_blob.jpg
,corrupted_original.jpg
被正确加载和显示。我知道第一个假设是“在上传过程中发生了一些事情”,但是浏览器或 windows/ubuntu 图像查看器或另一个渲染图像的软件可以正确处理这两个图像。因此,枕头或底层 libjpeg 有一些东西。
我曾尝试使用ImageFile.LOAD_TRUNCATED_IMAGES = True
,但我得到的只是一张黑色图像-_-
请帮忙!