2017-02-25 4 views
1

Ich versuche eine Bilddatei mit Bildpaket von Keras zu lesen.OSError: defekter Datenstrom beim Lesen der Bilddatei

Hier ist mein Code.

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)) 

Wenn ich den Code ausführen, erhalte ich den folgenden Fehler.

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 

Bitte beachten Sie, wenn ich test_image.jpg-test_image.png konvertieren, dann der angegebene Code perfekt funktioniert. Aber ich habe mehrere tausend Bilder und kann sie nicht ins PNG-Format konvertieren. Ich habe mehrere Dinge ausprobiert, nachdem ich im Internet nach einer Lösung gesucht hatte, aber ich konnte das Problem nicht lösen.

Jede Hilfe wäre willkommen!

Antwort

1

Verwenden Sie diese am Anfang des Codes:

from PIL import Image, ImageFile 
ImageFile.LOAD_TRUNCATED_IMAGES = True 

ich es gefunden here. Und das funktioniert für mich.

0

Nach herePillow Upgrade von pip install Pillow --upgrade sollte dieses Problem lösen.

Wenn Sie immer noch mit dem Problem konfrontiert sind, können Sie mogrify verwenden, um alle Ihre Bilder im Stapel zu konvertieren. mogrify -format png *.jpg

+0

wenn ich versuche, Kissen zu aktualisieren, sagt es, Kissen ist bereits zu seiner neuesten Version. Ich habe den Befehl 'mogrify' allerdings nicht versucht. –