Windows10下用Python处理Google Cardboard照片如何保留XMP元数据
解决方案
方案1:高版本Pillow原生支持(最简便,无额外依赖)
Pillow 9.1.0及以上版本已原生支持JPEG等主流图片格式的XMP元数据读写,无需安装其他第三方依赖,仅需在图片导出时传入原图提取的XMP数据即可完成保留。
- 升级Pillow到最新版本:
pip install --upgrade pillow - 代码示例:
from PIL import Image # 读取原图并提取XMP元数据 with Image.open("原始全景图.jpg") as origin_img: xmp_data = origin_img.info.get("xmp") # 此处插入你的图像处理逻辑 processed_img = origin_img # 此处为示例,替换为实际处理后的图像对象 # 导出时携带XMP参数 processed_img.save("处理后全景图.jpg", xmp=xmp_data)
如果仅需要原样保留XMP元数据无需修改,该方案是最优选择。
方案2:预编译版pyexiv2(支持XMP字段修改)
如果需要修改Google Cardboard对应的GPano系列XMP字段,可以使用pyexiv2库,Windows平台提供官方预编译二进制包,完全不需要手动编译依赖:
- 安装命令:
pip install pyexiv2 - 代码示例:
from PIL import Image from pyexiv2 import Image as MetaImage # 读取原图完整XMP数据 with MetaImage("原始全景图.jpg") as meta_reader: all_xmp = meta_reader.read_xmp() # 图像处理逻辑 with Image.open("原始全景图.jpg") as img: processed = img.rotate(180) # 示例操作 processed.save("临时输出文件.jpg") # 将XMP写入处理后的图片 with MetaImage("临时输出文件.jpg") as meta_writer: meta_writer.modify_xmp(all_xmp)
方案3:PyExifTool(兼容性最强)
如果上述两种方案无法兼容你的图片格式需求,可以使用ExifTool的Python封装,Windows平台仅需使用官方提供的独立可执行文件,无需编译:
- 下载Windows版ExifTool可执行文件,重命名为
exiftool.exe放在脚本同级目录或系统PATH路径下 - 安装Python封装库:
pip install PyExifTool - 该工具支持所有图片格式的元数据读写,完全兼容Google Cardboard的XMP字段规范。
内容的提问来源于stack exchange,提问作者zeus300
相关产品推荐
相关产品推荐

