【问题标题】:How can I get the StripOffsets tag to stay the same when using the LibTiff.Net 2.3 library?使用 LibTiff.Net 2.3 库时,如何使 StripOffsets 标签保持不变?
【发布时间】:2012-02-25 00:32:07
【问题描述】:

我有一个带有标签 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”标签,它是自动设置的?请参阅下面的示例...

【问题讨论】:

    标签: c# tags tiff libtiff.net


    【解决方案1】:

    STRIPOFFSETS 标签是库在将图像数据写入文件时自动设置的。

    通常,这个标签的值是多少并不重要(当然,除非它是正确的数字)。

    但有时有要求:图像数据必须保存在目录(页)头之后。某些应用程序要求以这种方式编写 TIFF。

    在这种情况下,您应该在任何 将栅格数据写入文件或流以在栅格数据之前写入 TIFF 标签的方法。

    CheckpointDirectory 将保存目录数据和标签数据,但不会关闭输出,您将能够继续创建图像。

    您的代码应如下所示:

    using (Tiff tif = Tiff.Open("file.tif", "w"))
    {
     ...
     tif.SetField(..);
     ...
     tif.SetField(..);
     tif.CheckpointDirectory();
    
     ...
     tif.WriteRawStrip(..);
     ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-26
      • 2012-03-15
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2017-05-24
      相关资源
      最近更新 更多