Python 如何为tiff文件添加附加标记
我试图读取并保存一个带有一些附加标签的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
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实现中的某些不受支持的功能造成的,至少在旧版本中是如此。感谢您的解释!所以,如果我不能使用新版本来添加标签或旧版本来编写正确的图像,有没有其他方法或库来做到这一点,非常感谢!