如何在Python中提取图像元数据(代码实现教程)

Python如何提取图像元数据?本文带你了解如何使用带有 Pillow 库的 Python 中的可交换图像文件格式 (EXIF) 提取图像元数据,例如 GPS 信息、相机品牌、型号等。
如何在Python中提取图像元数据?在本教程中,你将学习如何使用Python 中的Pillow 库在图像中提取一些有用的元数据。
数码相机、智能手机和扫描仪等设备使用EXIF 标准来保存图像或音频文件。该标准包含许多可用于取证调查的有用标签可供提取,例如设备的品牌、型号、图像创建的确切日期和时间,甚至某些设备上的 GPS 信息。
请注意,Linux 上有免费的元数据提取工具,例如 ImageMagick 或 ExifTool,本教程的目标是使用 Python 编程语言提取元数据。
相关:  如何在 Python 中提取 PDF 元数据
Python提取图像元数据示例 - 首先,你需要安装 Pillow 库:

pip3 install Pillow

打开一个新的 Python 文件并按照以下步骤操作:
from PIL import Image from PIL.ExifTags import TAGS

现在这仅适用于JPEG图像文件,拍摄你拍摄的任何图像并在本教程中对其进行测试(如果你想在我的图像上进行测试,你可以在教程的存储库中找到它):
# path to the image or video imagename = "image.jpg"# read the image data using PIL image = Image.open(imagename)

使用Image.open()函数读取图像后,让我们调用返回图像元数据的图像的getexif()方法:
# extract EXIF data exifdata = https://www.lsbin.com/image.getexif()

Python提取图像元数据示例 - exifdata现在变量的问题是字段名称只是 ID,而不是人类可读的字段名称,这就是为什么我们需要来自PIL.ExifTags模块的TAGS字典,它将每个标签 ID 映射到人类可读的文本中:
# iterating over all EXIF data fields for tag_id in exifdata: # get the tag name, instead of human unreadable tag id tag = TAGS.get(tag_id, tag_id) data = https://www.lsbin.com/exifdata.get(tag_id) # decode bytes if isinstance(data, bytes): data = data.decode() print(f"{tag:25}: {data}")

Python如何提取图像元数据?这是我的输出:
ExifVersion: 0220 ShutterSpeedValue: (406, 100) ApertureValue: (1851, 1000) DateTimeOriginal: 2016:11:10 18:22:47 DateTimeDigitized: 2016:11:10 18:22:47 BrightnessValue: (-109, 100) ExposureBiasValue: (0, 10) MaxApertureValue: (1851, 1000) MeteringMode: 2 Flash: 0 FocalLength: (220, 100) UserComment: ColorSpace: 1 ExifImageWidth: 2592 FocalLengthIn35mmFilm: 22 SceneCaptureType: 0 ExifImageHeight: 1944 ImageWidth: 2592 ImageLength: 1944 Make: samsung Model: SM-G920F Orientation: 8 YCbCrPositioning: 1 ExposureTime: (1, 17) XResolution: (72, 1) YResolution: (72, 1) FNumber: (19, 10) FNumber: (19, 10) ImageUniqueID: B05LLHA01PM ISOSpeedRatings: 400 ISOSpeedRatings: 400 ISOSpeedRatings: 400 ISOSpeedRatings: 400 ResolutionUnit: 2 ExifOffset: 226 ExposureMode: 0 FlashPixVersion: 0100 WhiteBalance: 0 Software: G920FXXS4DPI4 DateTime: 2016:11:10 18:22:4 MakerNote:0100Z@P Z@P

如何在Python中提取图像元数据?以上是一堆有用的东西,通过快速搜索模型,我得出结论,这张图像是由三星 Galaxy S6 拍摄的,在其他设备拍摄的图像上运行它,你会看到不同的(可能更多)字段。
【如何在Python中提取图像元数据(代码实现教程)】好的,我们完成了。对你来说一个很好的挑战是从 URL 下载所有图像,然后在你找到的每个图像上运行本教程的脚本并调查有趣的结果!

    推荐阅读