You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python提取图片元数据无输出问题求助(含Pillow代码)

解决Python提取图片元数据无输出的问题

可能原因及对应解决方案

1. 图片本身无EXIF元数据

很多图片(比如网络下载后压缩过、手动编辑保存后的)会丢失EXIF信息,这种情况下任何库都提取不到内容。

  • 验证方式:用系统自带工具查看图片属性——Windows右键→属性→详细信息,Mac右键→显示简介→更多信息,若没有相机参数、拍摄时间这类信息,说明图片本身无EXIF。
  • 解决:更换一张带EXIF的测试图,比如相机直接拍摄的原图。

2. Pillow版本或路径问题

你的代码逻辑没问题,但需注意几个细节:

  • 确保安装最新版Pillow:
    pip install --upgrade Pillow
    
  • 检查图片路径:如果image.jpg不在脚本当前工作目录,要写绝对路径,比如C:/Users/xxx/Desktop/image.jpg(Windows)或/home/xxx/image.jpg(Linux/Mac)。
  • 优先用JPG格式测试,PNG等格式默认通常不存储EXIF信息。

3. OpenCV用法修正

OpenCV本身提取EXIF的功能有限,搭配exifread库能更稳定提取,示例代码如下:

import exifread

# 必须用二进制模式打开文件
with open("image.jpg", 'rb') as f:
    tags = exifread.process_file(f)
# 过滤掉冗余字段,只显示有效元数据
for tag in tags.keys():
    if tag not in ['JPEGThumbnail', 'TIFFThumbnail', 'Filename', 'EXIF MakerNote']:
        print(f"{tag:25}: {tags[tag]}")

先安装依赖库:

pip install exifread

改进版Pillow排查代码

加入文件存在检查和空数据提示,方便快速定位问题:

from PIL import Image
from PIL.ExifTags import TAGS
import os

imagename = "image.jpg"

if not os.path.exists(imagename):
    print(f"错误:找不到文件 {imagename}")
else:
    image = Image.open(imagename)
    exifdata = image.getexif()
    
    if not exifdata:
        print("该图片无EXIF元数据")
    else:
        for tag_id in exifdata:
            tag = TAGS.get(tag_id, tag_id)
            data = exifdata.get(tag_id)
            if isinstance(data, bytes):
                data = data.decode()
            print(f"{tag:25}: {data}")

内容的提问来源于stack exchange,提问作者Fatima_Afzaal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 03:45:17