如何修改转换后的金字塔式分块TIFF物理分辨率元数据?
修改金字塔式分块TIFF的分辨率元数据
Python 方法
可以用tifffile库处理,它支持读写金字塔式分块TIFF的元数据,操作步骤如下:
- 先安装库:
pip install tifffile
- 编写修改脚本,替换成你需要的正确分辨率值:
import tifffile # 替换为你的TIFF文件路径 input_path = "your_pyramidal_tiff.tif" output_path = "corrected_tiff.tif" # 打开文件并读取元数据 with tifffile.TiffFile(input_path) as tif: # 获取第一个页面(金字塔最高分辨率层)的元数据 page = tif.pages[0] # 复制原有元数据,仅修改分辨率相关字段 new_tags = page.tags.copy() # 设置分辨率单位:3代表centimeter,2代表inch new_tags['ResolutionUnit'] = tifffile.TiffTag(296, 'SHORT', 1, 3) # 设置X/Y分辨率,用分子分母整数组表示RATIONAL类型(示例为96DPI对应的厘米分辨率:96/2.54≈37.795) new_tags['XResolution'] = tifffile.TiffTag(282, 'RATIONAL', 1, (3779527, 100000)) new_tags['YResolution'] = tifffile.TiffTag(283, 'RATIONAL', 1, (3779527, 100000)) # 写入修正后的文件,保留金字塔结构 with tifffile.TiffWriter(output_path, bigtiff=False) as writer: for page in tif.pages: writer.write( page.asarray(), photometric=page.photometric, planarconfig=page.planarconfig, resolutionunit=new_tags['ResolutionUnit'].value, xresolution=new_tags['XResolution'].value, yresolution=new_tags['YResolution'].value, tile=page.tile, compression=page.compression, metadata=page.metadata )
命令行方法
用exiftool工具直接修改,它对金字塔式分块TIFF的元数据支持良好:
先安装exiftool(Linux可通过包管理器安装,Windows/macOS可下载二进制文件)
执行修改命令,替换成正确的分辨率值和单位:
# 示例:保持单位为centimeter,设置X/Y分辨率为37.795(对应96DPI) exiftool -ResolutionUnit=3 -XResolution=37.795 -YResolution=37.795 -overwrite_original your_pyramidal_tiff.tif
参数说明:
-ResolutionUnit=3代表厘米,=2代表英寸-overwrite_original直接修改原文件,去掉该参数会自动生成原文件的备份(带_original后缀)- 分辨率数值直接写浮点数即可,exiftool会自动处理TIFF的RATIONAL类型存储
注意:操作前建议先备份原文件,避免意外损坏。
内容的提问来源于stack exchange,提问作者jkr
相关产品推荐
相关产品推荐

