OSError:读取图像文件时数据流损坏

时间:2017-02-25 22:39:29

标签: python-3.5 keras

我正在尝试使用Keras的Image包读取图像文件。

这是我的代码。

from keras.preprocessing import image
img_path = 'test/test_image.jpg'  # This is an image I took in my kitchen.
img = image.load_img(img_path, target_size=(224, 224))

当我运行代码时,我收到以下错误。

anaconda3/lib/python3.5/site-packages/PIL/ImageFile.py in load(self)
    238         if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0:
    239             # still raised if decoder fails to return anything
--> 240             raise_ioerror(err_code)
    241 
    242         # post processing

anaconda3/lib/python3.5/site-packages/PIL/ImageFile.py in raise_ioerror(error)
     57     if not message:
     58         message = "decoder error %d" % error
---> 59     raise IOError(message + " when reading image file")
     60 
     61 

OSError: broken data stream when reading image file

请注意,如果我将test_image.jpg转换为test_image.png,那么给定的代码就能完美运行。但我有几千张图片,我无法将它们全部转换为png格式。我在网上搜索解决方案之后尝试了几件事,但无法解决问题。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

在代码的开头使用它:

from PIL import Image, ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True

我发现它here。这对我有用。

答案 1 :(得分:0)

根据here Pillow升级pip install Pillow --upgrade应解决此问题。

如果您仍然遇到问题,可以使用mogrify批量转换所有图片。 mogrify -format png *.jpg