2016-05-12 17 views
2

Ich versuche, eine jpg-Datei mit Kissen (Version 3.2.0) in Jupyter Notebook (Python 3.4) zu lesen, aber es funktioniert nicht mit dem folgenden Fehler:Lese Bild Kissen fehl in Jupyter Notebook

OSError: broken data stream when reading image file

ich verwende den folgenden Code:

from PIL import Image 
im = Image.open("/path/to/image.jpeg") 
im.show() 

Es funktioniert gut, sowohl in der interaktiven Python-Shell und mit Python 2.7 statt 3.4.

Ich habe diese Schritte bereits gefolgt: Using Pillow with Python 3

jemand eine Idee, was los ist?

Antwort

1

Es sieht so aus, als würden Sie nicht auf das Verzeichnis zeigen, in dem Ihr Foto gespeichert ist.

import os 
defaultWd = os.getcwd() 
defaultWd # Sets your curretn wd 

os.chdir(defaultWd + '\\Desktop') # Points to your photo--e.g., on Desktop 
os.getcwd() # Shows change in wd 

from PIL import Image 
im = Image.open("Mew.jpg") 
im.show() # Will plot to your default image viewing software 

Und eine andere Art und Weise, wenn Sie nicht wollen, Strom wd sich ändern:

im = Image.open(os.getcwd() + "\\Desktop\\Mew.jpg") 
im.show() 

Und wenn Sie inline darstellen möchten:

from matplotlib.pyplot import imshow 

%matplotlib inline 
inlinePic = Image.open(os.getcwd() + "\\Desktop\\Mew.jpg") 
imshow(inlinePic) 

Hinweis: Sie können auch wünschen können Geben Sie einfach "jpg" anstelle von "jpeg" ein, wie oben beschrieben, wenn sich Ihr Bild in Ihrem aktuellen Arbeitsverzeichnis befindet. Wenn PIC nicht installiert ist, wird der Fehler NameError: name 'Image' is not defined angezeigt.

+0

Ich verwende einen absoluten Pfad. Ich habe es einfach aus dem Code-Snippet entfernt, um es lesbar zu machen. Das Problem tritt auf, wenn die Datei gelesen wird. Es ist nicht mit dem Plotten verbunden. Es tritt auch auf, wenn ich "im.show()" durch "im" ersetze – aecker