使用LibTiff.Net 2.3库时,如何让StripOffsets标记保持不变?
我有一个原始图像,其标签为StripOffsets = 768.当我在内存中编辑图像然后将其写回文件时,我尝试将StripOffsets标记手动设置为原始的相同值768(使用以下方法)。
//Set the height for the page output.SetField(TiffTag.ROWSPERSTRIP, ttPage[i].Height); //Set the offset for the page output.SetField(TiffTag.STRIPOFFSETS, ttPage[i].StripOffset);
由于某种原因,最终结果是StripOffsets = 8.为什么不按照我想要的方式设置StripOffsets? 另外一点也会影响我在AWare Systems AsTiffTagViewer中显示的“页面偏移量”。 我确信这与同样的问题有关。 不知怎的,我没有正确保存tiff。 也许我无法手动设置“StripOffsets”标签并自动设置? 看下面我的例子……
来自AsTiffTagViewer http://sofzh.miximages.com/c%23/2nqe3nt.png的结果
STRIPOFFSETS
标记在将图像数据写入文件时由库自动设置。
通常这个标签的价值是什么并不重要(当然,除非它是正确的数字)。
但有时需要:图像数据必须在目录(页面)标题之后保存。 某些应用程序需要以这种方式编写TIFF。
在这种情况下,您应该在将栅格数据写入文件或流以在栅格数据之前写入TIFF标记的任何方法之前调用CheckpointDirectory
方法。
CheckpointDirectory
将保存目录数据以及标签数据,但不会关闭输出,您将能够继续创建图像。
您的代码应如下所示:
using (Tiff tif = Tiff.Open("file.tif", "w")) { ... tif.SetField(..); ... tif.SetField(..); tif.CheckpointDirectory(); ... tif.WriteRawStrip(..); ... }