如何利用python读取图片属性信息

  

当我们需要对图片进行处理时,往往需要获取图片的属性信息。在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
相关文章