如何在Python中实现3D TIFF文件间的元数据复制?
如何在Python中复制3D TIFF图像的所有元数据?
我正尝试在Python中将一个3D TIFF图像的所有元数据复制到另一个文件中。用Perl工具exiftool可以轻松实现:
exiftool -tagsfromfile <source-file> <target-file>
但把它作为Python流水线的依赖安装并不方便。
我试过几个Python库读取TIFF元数据:
- 使用exifread读取:
import exifread with open("img_w_metadata.tiff", 'rb') as f: tags = exifread.process_file(f) - 使用piexif读取:
import piexif exif_data = piexif.load("img_w_metadata.tiff")
但修改或插入元数据的操作很棘手:
- exifread没有相关的修改/插入文档;
- piexif仅支持JPG文件,处理TIFF时会报错。尝试写入的代码如下(会擦除图像内容):
报错信息:# Open TIFF file for writing # THIS ERASES THE IMAGE CONTENTS with open("img_no_metadata", "wb") as f: exif_bytes = piexif.dump(exif_data) f.write(exif_bytes)Traceback (most recent call last): piexif.insert(exif_bytes, img_new) File "C:\Users\......\Python39\site-packages\piexif\_insert.py",line 39, in insert raise InvalidImageDataError piexif._exceptions.InvalidImageDataError
其他试过的库也有各自问题:
- Pillow处理元数据表现良好,但不支持3D图像;
- OpenCV支持3D图像却无法处理元数据;
- Tifffile库会擦除目标文件内容。
求解决办法。
内容的提问来源于stack exchange,提问作者Ricardo Guerreiro
相关产品推荐
相关产品推荐

