当我们需要对图片进行处理时,往往需要获取图片的属性信息。在Python中,可以使用Pillow
库来处理图像和获取图像的元数据信息。下面是利用Python读取图片属性信息的完整攻略:
安装Pillow库
首先,我们需要安装Pillow。可以使用以下命令安装:
pip install Pillow
读取图片的元数据信息
Pillow库提供了许多方法来读取图像的元数据信息。我们可以使用Image
类来读取图像信息。以下是一些最常用的方法:
读取图像的格式
可以使用format
方法来读取图像的格式信息。以下是一个示例:
from PIL import Image
# 打开图像文件
image = Image.open('test.jpg')
# 获取图像的格式
image_format = image.format
print('图像的格式为:', image_format)
输出:
图像的格式为: JPEG
读取图像的尺寸
可以使用size
方法来读取图像的尺寸信息。以下是一个示例:
from PIL import Image
# 打开图像文件
image = Image.open('test.jpg')
# 获取图像的尺寸
width, height = image.size
print('图像的尺寸为:', width, 'x', height)
输出:
图像的尺寸为: 1000 x 500
读取图像的模式
可以使用mode
方法来读取图像的模式信息。以下是一个示例:
from PIL import Image
# 打开图像文件
image = Image.open('test.jpg')
# 获取图像的模式
image_mode = image.mode
print('图像的模式为:', image_mode)
输出:
图像的模式为: RGB
读取图像的元数据
使用_getexif()
方法访问EXIF元数据。 如果图像没有EXIF数据,则会返回None。以下是一个示例:
from PIL import Image
from PIL.ExifTags import TAGS
# 打开图像文件
image = Image.open('test.jpg')
# 获取图像的exif元数据
exifdata = image._getexif()
# 如果存在元数据,则为创建一个可读取的字典
if exifdata:
for tag_id in exifdata:
tag_name = TAGS.get(tag_id, tag_id)
tag_value = exifdata.get(tag_id)
if isinstance(tag_value, bytes):
tag_value = tag_value.decode()
print(f"Tag: {tag_name}, Value: {tag_value}")
else:
print("该图像没有元数据.")
输出:
Tag: Make, Value: Canon
Tag: Model, Value: Canon EOS 450D
Tag: FNumber, Value: 5.6
Tag: ExposureTime, Value: (1, 200)
Tag: ISOSpeedRatings, Value: 100
Tag: DateTimeOriginal, Value: 2019:09:07 14:30:25
Tag: DateTimeDigitized, Value: 2019:09:07 14:30:25
Tag: ShutterSpeedValue, Value: (262144, 65536)
Tag: ApertureValue, Value: (460800, 65536)
Tag: BrightnessValue, Value: (262144, 65536)
Tag: ExposureBiasValue, Value: (0, 1)
Tag: MeteringMode, Value: 5
Tag: Flash, Value: 16
Tag: FocalLength, Value: 55
Tag: SubsecTimeOriginal, Value: 00
Tag: SubsecTimeDigitized, Value: 00
示例说明
示例1: 读取一张图片的尺寸信息
from PIL import Image
# 打开一张图片
image = Image.open('test.jpg')
# 读取图片的尺寸
width, height = image.size
# 输出图片的尺寸信息
print(f"图片的尺寸为: {width} x {height}")
输出:
图片的尺寸为: 1000 x 500
示例2: 读取一张图片的EXIF元数据
from PIL import Image
from PIL.ExifTags import TAGS
# 打开一张图片
image = Image.open('test.jpg')
# 读取图片的exif元数据
exifdata = image._getexif()
# 解析元数据
if exifdata:
for tag_id in exifdata:
tag_name = TAGS.get(tag_id, tag_id)
tag_value = exifdata.get(tag_id)
if isinstance(tag_value, bytes):
tag_value = tag_value.decode()
print(f"Tag: {tag_name}, Value: {tag_value}")
else:
print("该图像没有元数据.")
输出:
Tag: Make, Value: Canon
Tag: Model, Value: Canon EOS 450D
Tag: FNumber, Value: 5.6
Tag: ExposureTime, Value: (1, 200)
Tag: ISOSpeedRatings, Value: 100
Tag: DateTimeOriginal, Value: 2019:09:07 14:30:25
Tag: DateTimeDigitized, Value: 2019:09:07 14:30:25
Tag: ShutterSpeedValue, Value: (262144, 65536)
Tag: ApertureValue, Value: (460800, 65536)
Tag: BrightnessValue, Value: (262144, 65536)
Tag: ExposureBiasValue, Value: (0, 1)
Tag: MeteringMode, Value: 5
Tag: Flash, Value: 16
Tag: FocalLength, Value: 55
Tag: SubsecTimeOriginal, Value: 00
Tag: SubsecTimeDigitized, Value: 00
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何利用python读取图片属性信息 - Python技术站