【问题标题】:Reading image using Pillow fails in Jupyter notebook在 Jupyter 笔记本中使用 Pillow 读取图像失败
【发布时间】:2016-09-08 21:55:45
【问题描述】:

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

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

我正在使用以下代码:

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

有人知道发生了什么吗?

【问题讨论】:

    标签: python python-2.7 python-3.x pillow jupyter-notebook


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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

      【讨论】:

      • 我使用的是绝对路径。为了便于阅读,我刚刚从代码 sn-p 中删除了它。读取文件时会出现问题。它与绘图无关。如果我将im.show() 替换为im,也会发生这种情况
      猜你喜欢
      • 1970-01-01
      • 2021-09-18
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2020-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多