在 Jupyter Notebook 中使用 Pillow 读取图像失败

Reading image using Pillow fails in Jupyter notebook

我正在尝试在 Jupyter notebook (Python 3.4) 中使用 Pillow(版本 3.2.0)读取 jpg 文件,但失败并出现以下错误:

OSError: broken data stream when reading image file

我正在使用以下代码:

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

它在交互式 Python shell 和使用 Python 2.7 而不是 3.4 中都工作正常。

我已经完成了这些步骤:Using Pillow with Python 3

有人知道发生了什么事吗?

您似乎没有指向存储照片的目录。

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

如果您不想更改当前 wd,还有另一种方法:

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

如果您想内联绘图:

from matplotlib.pyplot import imshow

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

注意:如果您的图像在当前工作目录中,您可能还想像上面那样简单地尝试键入 'jpg' 而不是 'jpeg'。此外,如果未安装 PIC,您将收到此错误 NameError: name 'Image' is not defined

问题与另一个导入有关:我在PIL之前导入了Tensorflow,导致了这个问题。与此问题相同:https://github.com/scikit-image/scikit-image/issues/2000。更改导入的顺序解决了它。