Python 如何为tiff文件添加附加标记

Python 如何为tiff文件添加附加标记,python,tiff,pillow,Python,Tiff,Pillow,我试图读取并保存一个带有一些附加标签的tiff文件,当我制作一个新图像时效果很好,但当我打开一个图像,然后尝试写一些元标签时,它不起作用(图像可以写入,但它将保留原始标签而不做任何更改) 我附上了我的测试代码,我感谢任何帮助 from PIL import Image, TiffImagePlugin def test_custom_metadata(): img = Image.open('myimage.tif') info = TiffImagePlugin.Image

我试图读取并保存一个带有一些附加标签的tiff文件,当我制作一个新图像时效果很好,但当我打开一个图像,然后尝试写一些元标签时,它不起作用(图像可以写入,但它将保留原始标签而不做任何更改)

我附上了我的测试代码,我感谢任何帮助

from PIL import Image, TiffImagePlugin
def test_custom_metadata():

    img = Image.open('myimage.tif')

    info = TiffImagePlugin.ImageFileDirectory()
    CustomTagId = 37000

    info[CustomTagId] = 6
    info.tagtype[CustomTagId] = 3 # 'short' TYPE

    Image.DEBUG=True
    TiffImagePlugin.WRITE_LIBTIFF = False # Set to True to see it break.
    img.save('./temp2.tiff', tiffinfo = info)

test_custom_metadata()

以下内容适用于枕头版本2.3:

from PIL import Image

image_1 = Image.open('input.tiff')
image_1.tag[37000] = 'my special tiff tag'
image_1.save('output.tiff', tiffinfo=image_1.tag)

image_2 = Image.open('output.tiff')
print image_2.tag[37000]
使用当前文件夹中的
input.tiff
运行时,会打印
my special tiff标记


我的理解是,这只有在不使用libtiff编写文件时才有效。使用libtiff自定义标记时将被忽略。

以下内容适用于枕头版本2.3:

from PIL import Image

image_1 = Image.open('input.tiff')
image_1.tag[37000] = 'my special tiff tag'
image_1.save('output.tiff', tiffinfo=image_1.tag)

image_2 = Image.open('output.tiff')
print image_2.tag[37000]
使用当前文件夹中的
input.tiff
运行时,会打印
my special tiff标记


我的理解是,这只有在不使用libtiff编写文件时才有效。使用libtiff时,将忽略自定义标记。

对于对该主题感兴趣的人:


这将完美地解决对该主题感兴趣的人的问题


这将完美地解决问题

什么是“不起作用”呢?如果有错误,请将stacktrace添加到帖子中。或者图像是写好的,但你看不到你的定制tiff标签?@Bernhard我说得很清楚,谢谢!您的代码在我的机器上运行时没有出错。@BillBell标记(37000)将不会按预期添加“不工作”是什么意思?如果有错误,请将stacktrace添加到帖子中。或者图像是写好的,但你看不到你的定制tiff标签?@Bernhard我说得很清楚,谢谢!您的代码在我的机器上运行时没有出错。@BillBell标记(37000)将不会按预期添加。谢谢您的回复!在我将枕头从4.1改为2.3后,它工作正常,可能是因为版本问题。还有一件事,枕头2.3 img.save()工作正常吗?保存图像时,图像显示不正确。show()是正确的,但保存后,其中一些变为空白。谢谢你的耐心!另存为“.png”有效。2.3是否支持“.tiff”…我认为区别在于2.3默认使用自己的tiff编写器,而对于较新版本,默认在幕后使用libtiff。在较新的版本中,您应该能够使用libtiff开始编写,就像您在示例中使用
TiffImagePlugin.WRITE_libtiff=False
所做的那样。保存的TIFF文件的问题可能是由于PIL TIFF writer实现中的某些不受支持的功能造成的,至少在旧版本中是如此。感谢您的解释!所以,如果我不能使用新版本来添加标签或旧版本来编写正确的图像,有没有其他方法或库来做到这一点,非常感谢!谢谢你的回复!在我将枕头从4.1改为2.3后,它工作正常,可能是因为版本问题。还有一件事,枕头2.3 img.save()工作正常吗?保存图像时,图像显示不正确。show()是正确的,但保存后,其中一些变为空白。谢谢你的耐心!另存为“.png”有效。2.3是否支持“.tiff”…我认为区别在于2.3默认使用自己的tiff编写器,而对于较新版本,默认在幕后使用libtiff。在较新的版本中,您应该能够使用libtiff开始编写,就像您在示例中使用
TiffImagePlugin.WRITE_libtiff=False
所做的那样。保存的TIFF文件的问题可能是由于PIL TIFF writer实现中的某些不受支持的功能造成的,至少在旧版本中是如此。感谢您的解释!所以,如果我不能使用新版本来添加标签或旧版本来编写正确的图像,有没有其他方法或库来做到这一点,非常感谢!