📜  如何在Python中提取图像元数据?

📅  最后修改于: 2022-05-13 01:55:49.359000             🧑  作者: Mango

如何在Python中提取图像元数据?

先决条件: PIL

元数据代表关于数据的数据。对于图像,元数据意味着有关图像及其制作的详细信息。一些元数据是由捕获设备自动生成的。

图像元数据包含的一些细节如下:

  • 高度
  • 宽度
  • 日期和时间
  • 型号等

Python有 PIL 库,它使从图像中提取元数据的任务变得非常容易,只需使用几行代码。

方法:

  • 导入枕头模块。
  • 加载图像
  • 获取元数据。这样得到的元数据
  • 将其转换为人类可读的形式

元数据有很多种,但在这里我们只关注 Exif 元数据

Exif

这些元数据通常由相机和其他捕捉设备创建,包括有关图像及其捕捉方法的技术信息,例如曝光设置、捕捉时间、GPS 位置信息和相机型号。

为此,我使用了这张图片(链接如下)确保您使用的任何图片都应该有一些 EXIF 类型的元数据,并且大多数捕获设备都有 exif 数据

https://drive.google.com/file/d/1z2RaRvzC8Cd8oxD8pZJu2U0rpRr8tbwV/view

注意:-请避免通过 whatsapp 共享图像。 Whatsapp 从任何图像中删除所有元数据

执行:

第一步:导入模块。

第二步:加载图片并提取exif数据。

步骤3:将exif标签id(在代码中用tagid表示)转换为代码中用tagname表示的人类可读形式,并获取其各自的值。

从带有枕头的图像中提取元数据的应用程序:下面的脚本实现了上述方法

Python3
from PIL import Image
from PIL.ExifTags import TAGS
  
# open the image
image = Image.open("img.jpg")
  
# extracting the exif metadata
exifdata = image.getexif()
  
# looping through all the tags present in exifdata
for tagid in exifdata:
      
    # getting the tag name instead of tag id
    tagname = TAGS.get(tagid, tagid)
  
    # passing the tagid to get its respective value
    value = exifdata.get(tagid)
    
    # printing the final result
    print(f"{tagname:25}: {value}")


输出: