提交 ed7018a8 编写于 作者: R root

Thu Jul 31 07:54:00 CST 2025 inscode

上级 0a575cc3
URL: https://linux.do/uploads/default/original/4X/0/a/b/0abe11fa8c6477c305398de64e1ce35f981e019f.jpeg
格式: JPEG
模式: RGB
尺寸: (1440, 1080)
EXIF 数据: 无或未找到
URL: https://linux.do/uploads/default/original/4X/2/d/d/2ddf7af927e77838f8737232778993455ed81633.jpeg
格式: JPEG
模式: RGB
尺寸: (1920, 1200)
EXIF 数据: 无或未找到
URL: https://linux.do/uploads/default/original/4X/8/f/5/8f53435f50d3143b21b85d0a9a5f3be57d98816c.jpeg
格式: JPEG
模式: RGB
尺寸: (1280, 1707)
EXIF 数据: 无或未找到
print('欢迎来到 InsCode') import requests
\ No newline at end of file from PIL import Image, ExifTags
from io import BytesIO
import os
# 图片链接列表
image_urls = [
"https://linux.do/uploads/default/original/4X/0/a/b/0abe11fa8c6477c305398de64e1ce35f981e019f.jpeg",
"https://linux.do/uploads/default/original/4X/2/d/d/2ddf7af927e77838f8737232778993455ed81633.jpeg",
"https://linux.do/uploads/default/original/4X/8/f/5/8f53435f50d3143b21b85d0a9a5f3be57d98816c.jpeg"
]
# 创建一个目录来保存元数据文件(可选)
output_dir = "image_metadata"
os.makedirs(output_dir, exist_ok=True)
def get_image_metadata(url, index):
"""
获取单个图片的元数据。
"""
try:
print(f"正在处理图片 {index + 1}: {url}")
# 发送HTTP GET请求获取图片内容
response = requests.get(url)
response.raise_for_status() # 如果请求失败则抛出异常
# 使用BytesIO将响应内容转换为文件类对象
image_data = BytesIO(response.content)
# 使用Pillow打开图片
image = Image.open(image_data)
# 打印基本元数据
print(f" 格式: {image.format}")
print(f" 模式: {image.mode}")
print(f" 尺寸: {image.size}")
# 尝试获取EXIF数据 (如果图片是JPEG且包含EXIF信息)
exif_data = {}
if image.format == 'JPEG' and hasattr(image, '_getexif'):
exif_raw = image._getexif()
if exif_raw is not None:
# 将EXIF标签代码转换为可读的名称
for tag_id, value in exif_raw.items():
tag_name = ExifTags.TAGS.get(tag_id, f"Unknown_{tag_id}")
exif_data[tag_name] = value
print(f" EXIF 数据: {exif_data}")
else:
print(" EXIF 数据: 未找到或为空")
else:
print(" EXIF 数据: 不支持或非JPEG格式")
# 可选:将元数据保存到文件
filename_base = os.path.join(output_dir, f"metadata_{index}")
with open(f"{filename_base}.txt", "w", encoding='utf-8') as f:
f.write(f"URL: {url}\n")
f.write(f"格式: {image.format}\n")
f.write(f"模式: {image.mode}\n")
f.write(f"尺寸: {image.size}\n")
if exif_data:
f.write("EXIF 数据:\n")
for key, value in exif_data.items():
f.write(f" {key}: {value}\n")
else:
f.write("EXIF 数据: 无或未找到\n")
print(f" 元数据已保存到 {filename_base}.txt\n")
except requests.exceptions.RequestException as e:
print(f" 错误: 获取图片时发生网络错误: {e}\n")
except Exception as e:
print(f" 错误: 处理图片时发生错误: {e}\n")
# 遍历所有图片链接并获取元数据
for i, url in enumerate(image_urls):
get_image_metadata(url, i)
print("所有图片元数据获取完成。")
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册