diff --git a/image_metadata/metadata_0.txt b/image_metadata/metadata_0.txt new file mode 100644 index 0000000000000000000000000000000000000000..2e89913d5233700899daaa8d4af7bda7380ac2ca --- /dev/null +++ b/image_metadata/metadata_0.txt @@ -0,0 +1,5 @@ +URL: https://linux.do/uploads/default/original/4X/0/a/b/0abe11fa8c6477c305398de64e1ce35f981e019f.jpeg +格式: JPEG +模式: RGB +尺寸: (1440, 1080) +EXIF 数据: 无或未找到 diff --git a/image_metadata/metadata_1.txt b/image_metadata/metadata_1.txt new file mode 100644 index 0000000000000000000000000000000000000000..179b2391664b70a625bc48a8f3b551e50e0b1691 --- /dev/null +++ b/image_metadata/metadata_1.txt @@ -0,0 +1,5 @@ +URL: https://linux.do/uploads/default/original/4X/2/d/d/2ddf7af927e77838f8737232778993455ed81633.jpeg +格式: JPEG +模式: RGB +尺寸: (1920, 1200) +EXIF 数据: 无或未找到 diff --git a/image_metadata/metadata_2.txt b/image_metadata/metadata_2.txt new file mode 100644 index 0000000000000000000000000000000000000000..411fa6a869050b7bc496938549fa03897f114e93 --- /dev/null +++ b/image_metadata/metadata_2.txt @@ -0,0 +1,5 @@ +URL: https://linux.do/uploads/default/original/4X/8/f/5/8f53435f50d3143b21b85d0a9a5f3be57d98816c.jpeg +格式: JPEG +模式: RGB +尺寸: (1280, 1707) +EXIF 数据: 无或未找到 diff --git a/main.py b/main.py index 4c0c135f61696bcf42c375ca5ab62aa5b105afc8..ae3bfa46f3a11dec76746220ade7ed9ae8d6041d 100644 --- a/main.py +++ b/main.py @@ -1 +1,79 @@ -print('欢迎来到 InsCode') \ No newline at end of file +import requests +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