枕头奇怪的同步jpg图像在同一图像上的行为

时间:2018-03-15 18:50:58

标签: python-3.x pillow libjpeg libjpeg-turbo

我有相同的图像,其中一个是存储在我的机器上的原始图像,另一个上传到azure blob存储并下载回我的本地机器。 这是一段代码(Python 3.6.3,Pillow-SIMD 4.3.0post0,libjpeg-turbo,ubuntu 17.10 / alpine docker container):

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,但我得到的只是一张黑色图片-_-

请帮忙!

original image

blob uploaded/downloaded image

1 个答案:

答案 0 :(得分:0)

经过调查,我发现由于某种原因,后缀JPEG字节丢失了。这是解决方法:

{
  todos: Array(2)
}
todos: (2)[{…}, {…}] __proto__:
  Object