我试图更改现有TIFF图像中一些自定义ASCII标记的值,如http://bitmiracle.com/libtiff/help/add-custom-tiff-tags-to-an-existing-tiff-image.aspx中的示例所示。
更改本质上涉及添加到现有标签的字符串中,或添加不存在的自定义标签。
但是,当添加新标签时,LibTiff似乎在图像的末尾添加了一个全新的目录,而不是更改保留的完整目录。我已经用WinHex验证了这一点,还尝试了几种不同的方法,例如WriteDirectory,CheckpointDirectory。正在打开文件进行追加。
重复目录导致我们无法控制的另一个程序必须处理图像。
有没有一种方法可以只更新现有目录?或者,如果有必要重写整个文件,请问我如何获得一些指示?如果文件被重写,则还需要保留其他自定义标签。
最佳答案
如果将新标签添加到现有目录或更改某些现有标签,则最好用新目录替换现有目录。否则,您的标签可能会覆盖栅格数据(因为更新的目录比旧目录需要更多空间)。
因此,如果程序无法使用更新的目录链正确处理文件,则您需要重写整个文件是正确的。
您可能需要查看库随附的TiffCP实用程序的源代码。源代码应为您提供足够的入门线索。该实用程序会重新压缩文件中的数据,但您可能不需要这样做。您可以只使用ReadRawStrip
和WriteRawStrip
方法复制压缩数据。该实用程序还会复制所有标签。这绝对是您在代码中需要做的(同时更改/添加标签)。
关于c# - 使用LibTiff.Net重复目录更新现有镜像中的标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14919072/