如何在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}")
输出: