我有一个标签为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”标签,它是自动设置?请参阅下面的示例...
Results from AsTiffTagViewer http://oi42.tinypic.com/2nqe3nt.jpg
答案 0 :(得分:3)
STRIPOFFSETS
标记。
通常这个标签的值是什么并不重要(当然,除非它是正确的数字)。
但有时需要:在目录(页面)标题之后保存图像数据 。有些应用程序需要以这种方式编写TIFF。
在这种情况下,你应该在任何一个之前调用CheckpointDirectory
方法
将栅格数据写入文件或流以在栅格数据之前写入TIFF标记的方法。
CheckpointDirectory
会将目录数据与标签数据一起保存,但不会关闭输出,您将能够继续创建图像。
您的代码应如下所示:
using (Tiff tif = Tiff.Open("file.tif", "w"))
{
...
tif.SetField(..);
...
tif.SetField(..);
tif.CheckpointDirectory();
...
tif.WriteRawStrip(..);
...
}