本文目录导读:

我来介绍几种常用的Python读取图片信息的方法:
使用PIL/Pillow库(最常用)
from PIL import Image
from PIL.ExifTags import TAGS
# 打开图片
img = Image.open('example.jpg')
# 基本图片信息
print(f"图片格式: {img.format}")
print(f"图片尺寸: {img.size}")
print(f"图片模式: {img.mode}")
print(f"图片宽度: {img.width}")
print(f"图片高度: {img.height}")
# 获取EXIF信息(拍摄参数)
exif_data = img._getexif()
if exif_data:
print("\nEXIF信息:")
for tag_id, value in exif_data.items():
tag_name = TAGS.get(tag_id, tag_id)
print(f"{tag_name}: {value}")
使用OpenCV库
import cv2
# 读取图片
img = cv2.imread('example.jpg')
# 获取图片信息
print(f"图片形状: {img.shape}")
print(f"图片高度: {img.shape[0]}")
print(f"图片宽度: {img.shape[1]}")
print(f"通道数: {img.shape[2]}")
print(f"像素总数: {img.size}")
print(f"数据类型: {img.dtype}")
# 获取像素值示例
print(f"第一个像素的BGR值: {img[0, 0]}")
使用matplotlib库
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# 读取图片
img = mpimg.imread('example.jpg')
# 获取图片信息
print(f"图片数组形状: {img.shape}")
print(f"数据类型: {img.dtype}")
print(f"像素值范围: [{img.min()}, {img.max()}]")
# 显示图片
plt.imshow(img)
plt.axis('off')
plt.show()
使用imageio库
import imageio
import numpy as np
# 读取图片
img = imageio.imread('example.jpg')
# 获取图片信息
print(f"图片形状: {img.shape}")
print(f"数据类型: {img.dtype}")
print(f"像素值范围: {img.min()} - {img.max()}")
# 获取元数据
metadata = imageio.imread('example.jpg', meta=True)
print(f"元数据: {metadata}")
获取图片文件的系统信息
import os
from datetime import datetime
def get_image_file_info(filepath):
# 文件基本信息
stat_info = os.stat(filepath)
file_size = stat_info.st_size
# 文件创建时间
created_time = datetime.fromtimestamp(stat_info.st_ctime)
modified_time = datetime.fromtimestamp(stat_info.st_mtime)
return {
'文件名': os.path.basename(filepath),
'文件大小': f"{file_size / 1024:.2f} KB",
'创建时间': created_time,
'修改时间': modified_time
}
# 使用示例
file_info = get_image_file_info('example.jpg')
for key, value in file_info.items():
print(f"{key}: {value}")
完整的图片信息提取示例
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
import os
from datetime import datetime
def get_image_info(image_path):
"""获取图片的完整信息"""
info = {}
# 文件基本信息
stat_info = os.stat(image_path)
info['文件名'] = os.path.basename(image_path)
info['文件大小'] = f"{stat_info.st_size / 1024:.2f} KB"
# 图片信息
with Image.open(image_path) as img:
info['格式'] = img.format
info['尺寸'] = f"{img.width} x {img.height}"
info['模式'] = img.mode
# 获取EXIF信息
try:
exif = img._getexif()
if exif:
for tag_id, value in exif.items():
tag_name = TAGS.get(tag_id, tag_id)
if tag_name == "GPSInfo":
gps_info = {}
for gps_tag_id, gps_value in value.items():
gps_tag_name = GPSTAGS.get(gps_tag_id, gps_tag_id)
gps_info[gps_tag_name] = gps_value
info['GPS信息'] = gps_info
else:
info[tag_name] = str(value)[:50] # 截取前50个字符
except Exception as e:
info['EXIF'] = f"无法读取: {e}"
return info
# 使用示例
image_info = get_image_info('example.jpg')
for key, value in image_info.items():
print(f"{key}: {value}")
安装依赖
# 安装必要的库 pip install Pillow pip install opencv-python pip install matplotlib pip install imageio
选择建议
- 基本读取:使用PIL/Pillow,功能全面,易于使用
- 计算机视觉:使用OpenCV,功能强大,适合图像处理
- 数据可视化:使用matplotlib,适合显示和分析
- 文件信息:使用os模块获取系统文件属性
这些方法可以满足大多数图片信息读取的需求,你可以根据具体场景选择合适的方法。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播