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 下载所有图像,然后在你找到的每个图像上运行本教程的脚本并调查有趣的结果!
推荐阅读
- 如何使用Scapy在Python中构建WiFi扫描仪(代码实现教程)
- 系统之家win10系统64位企业版安装办法图解
- 本文教你win10精简版64位
- 本文教你OneKey Ghost win10安装
- 本文教你怎样安装windows10
- win10第5个正式版公布时间下载
- 本文教你win10版本查看的办法
- 本文教你win10桌面如何显示我的电脑
- 本文教你windows10的运用技巧