我正在尝试更改现有TIFF图像中的一些自定义ASCII标记的值,如http://bitmiracle.com/libtiff/help/add-custom-tiff-tags-to-an-existing-tiff-image.aspx上的示例所示。
这些更改本质上涉及到添加到现有标记的字符串中,或者添加不存在的自定义标记。
然而,当添加新标签时,LibTiff似乎在图像的末尾添加了一个全新的目录,而不是更改现有的目录,这是老生常谈的。我已经用WinHex验证了这一点,并尝试了几种不同的方法,如WriteDirectory、CheckpointDirectory。正在打开该文件以进行追加。
复制目录导致我们无法控制的另一个程序出现问题,该程序必须处理图像。
有没有办法只更新现有的目录?或者,如果有必要重写整个文件,我能得到一些关于如何做到这一点的指导吗?如果文件被重写,则需要保留其他自定义标记。
发布于 2013-02-17 20:29:56
如果您向现有目录添加新标签或更改一些现有标签,则最好用新目录替换现有目录。否则,您的标记可能会覆盖栅格数据(因为更新后的目录需要比旧目录更多的空间)。
因此,假设如果程序不能正确处理具有更新目录链的文件,则需要重写整个文件,这是正确的。
您可能希望查看该库附带的TiffCP实用程序的源代码。源代码应该会给你提供足够的线索来开始。该实用程序重新压缩文件中的数据,但您可能不需要这样做。您可以只使用ReadRawStrip和WriteRawStrip方法复制压缩数据。该实用程序还会复制所有标记。这是你在代码中绝对需要做的事情(同时改变/添加标签)。
发布于 2016-10-20 09:31:27
根据libbit.net文档:Tiff.Open Method
只支持"r“"w”"a“模式,外加一些次要模式,没有像fopen中那样的"r+”来支持对tiff的读写。
本机libtiff库有一个实用程序,可用于更改指定的tiff标记:
tiffset -s XResolution 400 test.tif
可以使用tiffinfo test.tif来验证结果。
https://stackoverflow.com/questions/14919072
复制相似问题