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

如何用Python和PILLOW为现有TIFF图像添加WANG注释?

如何正确给TIFF文件添加Wang Annotation标签(解决Pillow操作无效果问题)

我来帮你排查下问题,以及给出能成功实现的操作步骤:

你的操作为什么没生效?

直接修改im.tag字典的方式并不靠谱——Pillow的ImageTag对象虽然看起来像普通字典,但直接赋值的改动不会被保存流程正确识别和序列化到输出的TIFF文件里。另外,保存时也没明确告诉Pillow要保留这个自定义标签,导致最终的文件里并没有带上你添加的注释。

正确的实现步骤

Wang Annotation对应的TAG ID是32932(十六进制0x80A4),我们需要用Pillow专门的TIFF标签传递机制来添加它,具体代码如下:

from PIL import Image

# 打开原始TIFF和包含注释的ANN对应文件
source_im = Image.open("test.tif")
annotation_im = Image.open("test2.tif")

# 提取Wang Annotation的二进制数据
wang_data = annotation_im.tag.get(32932)
if not wang_data:
    print("没有找到Wang Annotation标签")
    exit()

# 准备TIFF自定义标签:键是TAG ID,值是(数据类型代码, 数据)
# Wang Annotation的数据类型是BYTE,对应代码1
custom_tags = {
    32932: (1, wang_data)
}

# 保存时通过tiffinfo参数传入自定义标签
source_im.save("test_with_stamp.tif", tiffinfo=custom_tags)

# 验证标签是否成功添加
saved_im = Image.open("test_with_stamp.tif")
print("Wang Annotation标签已添加:", 32932 in saved_im.tag)

关键细节说明

  1. 用tiffinfo传递标签:这是Pillow官方推荐的添加TIFF自定义标签的方式,它能确保标签被正确编码写入文件,而直接修改im.tag的操作会绕过这个序列化流程。
  2. 指定数据类型:TIFF标签需要明确数据类型,Wang Annotation属于BYTE类型(代码1),必须在元组里指定,否则Pillow不知道如何正确存储二进制数据。
  3. 验证方式:有些图像查看器不会直观显示Wang Annotation(也就是你说的"大黑框印章"),可以用exiftool这类工具验证标签是否存在,比如执行exiftool -WangAnnotation test_with_stamp.tif查看内容。

另外建议确保你的Pillow版本是较新的(比如9.x以上),旧版本对TIFF自定义标签的支持可能有缺陷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:38:01