从图像 PIL 获取图像文件名

新手上路,请多包涵

是否可以从 Image 对象获取我已经打开的 Image 的文件名?我检查了 API,我能想到的最好的是 PIL.Image.info,但是当我检查它时它似乎是空的。在 PIL Image 库中还有什么我可以用来获取此信息的东西吗?

(是的,我意识到我可以将文件名传递给函数。我正在寻找另一种方法来做到这一点。)

IE

 from PIL import Image

def foo_img(img_input):
  filename = img_input.info["filename"]
  # I want this to print '/path/to/some/img.img'
  print(filename)

foo_img(Image.open('/path/to/some/img.img'))

原文由 Derek Halden 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.8k
2 个回答

我不知道这是否被记录在任何地方,但只是使用 dir 在我打开的图像上显示了一个名为 filename 的属性:

 >>> im = Image.open(r'c:\temp\temp.jpg')
>>> im.filename
'c:\\temp\\temp.jpg'

不幸的是,您不能保证该属性将在对象上:

 >>> im2 = Image.new('RGB', (100,100))
>>> im2.filename
Traceback (most recent call last):
  File "<pyshell#50>", line 1, in <module>
    im2.filename
AttributeError: 'Image' object has no attribute 'filename'

您可以使用 try/except 来解决这个问题 AttributeError ,或者您可以在尝试使用对象之前测试它是否有文件名:

 >>> hasattr(im, 'filename')
True
>>> hasattr(im2, 'filename')
False
>>> if hasattr(im, 'filename'):
    print(im.filename)

c:\temp\temp.jpg

原文由 Mark Ransom 发布,翻译遵循 CC BY-SA 3.0 许可协议

Image 对象有一个 filename 属性。

  from PIL import Image

 def foo_img(img_input):
     print(img_input.filename)

 foo_img(Image.open('/path/to/some/img.img'))

原文由 dasdachs 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题