【问题标题】:Image.open() cannot identify image file in python script fileImage.open() 无法识别 python 脚本文件中的图像文件
【发布时间】:2016-09-03 18:40:04
【问题描述】:

我正在尝试执行此脚本

from PIL import Image
im = Image.open("image.jpg")
nx, ny = im.size

当我在 python shell 中运行它时它工作正常

pytesser_v0.0.1]#env python
>>> from PIL import Image
>>> im = Image.open("image.jpg")
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=46x24 at 0x7FA4688F16D0>

但是当我把它放在某个 test.py 文件中并像 python test.py 一样运行它时 我收到此错误

File "test1.py", line 17, in <module>
    im = Image.open("image.jpg")
  File "/usr/local/python.2.7.11/lib/python2.7/site-packages/PIL/Image.py", line 2309, in open
    % (filename if filename else fp))
IOError: cannot identify image file 'image.jpg'

请帮我解决这个问题,谢谢

PS:之前我从 Imaging-1.1.7 setup.py 安装 PIL,后来我安装了 Pillow,我认为问题在于机器上 PIL 和 Pillow 库的相互存在。

【问题讨论】:

    标签: python image python-2.7 python-imaging-library pillow


    【解决方案1】:

    确保“image.jpg”与“test1.py”在同一目录中。

    如果不是,那么您可以移动它,或者将正确的目录放在Image.open() 中。

    【讨论】:

    • image.jpg 与 test1.py 位于同一路径,我什至尝试给出 image.jpg 的绝对路径,但问题相同
    【解决方案2】:

    我也有同样的问题。

    这是因为 test.py 没有相同的路径名。如果您在同一个文件夹中工作,它将起作用。

    但是,我找到的解决方案是放入 完整路径 + 文件名,以便明确。

    "c:\...fullpath...\image.jpg"
    

    你可以这样做:

    from PIL import Image
    import os
    
    curDir = os.getcwd()
    fileName = "image.jpg"
    fn = curDir + "\\" + fileName
    
    print(fn)
    
    image = Image.open(fn)
    image.show()
    

    这行得通。如果您找到更好的方法,请告诉我。

    【讨论】:

    • 请注意@Navakanth 对他已经尝试给出绝对路径的另一个答案的评论
    • 您必须确保绝对路径适用于您的操作系统。我给出的例子是针对windows10的。我之所以这么说是因为我第一次尝试时没有正确读取 \ 或 /。以上将适用于win10,但可能不适用于ios或linux。
    【解决方案3】:

    好像 PIL 库还没有修复这个错误。

    这是我的解决方案: 使用 OpenCV 库打开图像,然后将其转换为 PIL 图像

    from PIL import Image
    import cv2
    
    image = 'Folder/My_picture.jpg'
    
    # read image using cv2 as numpy array
    cv_img = cv2.imread(image) 
    
    # convert the color (necessary)
    cv_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
    
    # read as PIL image in RGB
    pil_img = Image.fromarray(img).convert('RGBA') 
    

    然后您可以像使用常规 PIL 图像对象一样操作它。

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-17
      • 2020-05-26
      • 2017-09-11
      • 2015-09-05
      相关资源
      最近更新 更多