我可以通过PIL读取TIFF图像文件就好了......
im = Image.open('FRONT200BW_1.TIF')
我可以通过以下方式看到TIFF标题:
im.tag[270]
'returned description'
我在这里碰到了一堵砖墙。我需要使用Artist(315),Date_Time(306),Document_Name(269),Image_Description(270)和Page_Name(285),然后将文件保存回磁盘,而不对图像数据进行其他更改,也不任何其他标题值/标记。
似乎我应该能够做到这样的事情:
im.tag[270] = 'my new description'
但是当我这样做时,有趣的事情会发生......
如果我对该文件执行save()并检查它,它没有新的描述标题,实际上会丢失所有标题值。
当我通过
进行修改之前检查该值im.tag.tags
我得到的是一个字典,它返回的字符串返回了之前存在于文件中的描述。在我如上所述更改它并查看im.tag.tags之后,它将键270的值从字符串更改为元组。并且....就像我说的那样,保存它似乎消灭了所有标题。
如何更改这些标头值?
答案 0 :(得分:4)
希望这仍然会有所帮助。
您对标题的更改未保存,或者根本没有保存标记的原因是您没有正确保存它。据我了解,当对加载的图像进行更改时,更改的图像仅存在于内存中,并与其来自的文件解除关联,因此删除了特定于TIFF的标头。
要将图像保存到带有标题的TIFF文件,您必须:
tag
属性(PIL.TiffImagePlugin.ImageFileDirectory
对象)的引用。ImageFileDirectory
进行更改。 PIL.TiffImagePlugin
PIL.TiffImagePlugin
模块的属性WRITE_LIBTIFF
必须设置为False。save
方法时,你需要传递一个关键字参数tiffinfo
,设置为首次加载图像后引用的ImageFileDirectory
对象。 这可能会也可能不会要求您使用PIL的Pillow前叉,尽管我并不确定。
有关详细信息和代码示例,请参阅:https://github.com/python-pillow/Pillow/issues/983
答案 1 :(得分:0)
对于任何有兴趣的人......我放弃了为此工作的PIL。我确信那里有一个错误,我没有时间来修复它。如果你使用任何标题,那么它会吹掉Image.save()上的所有标题信息。
相反,我安装了libtiff库(yum在基于redhat的系统上安装libtiff),然后使用了subprocess.call(' tiffset -s X'),其中X是从我的python代码更改的标头ID