首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# LibTiff.Net - MultiTIFF更改标记-值

C# LibTiff.Net - MultiTIFF更改标记-值
EN

Stack Overflow用户
提问于 2018-09-22 11:20:32
回答 1查看 321关注 0票数 0

我想用LibTiff.net设置或更改多TIFF文件中的一些标记。因此,im目前使用SetDirectory()切换子映像,更新一些字段,并使用CheckpointDirectory()-Function签出。当我这样做时,只有生成的多TIFF文件中的第一个图像是可见的,其他的则完全是黑色的。甚至在没有用以下代码更改任何标记的情况下也会发生这种情况。我错过了什么?

如果我在For循环之外设置了CheckoutDirectory函数,那么所有的图片都将按需要显示,但我希望更改所有SubTiffs的标记,而不仅仅是最后一个的标记。

代码语言:javascript
复制
public static void setRequiredTags(string outputFilePath)
    {
        using (Tiff image_MultiTIFF = Tiff.Open(outputFilePath, "a"))
        {
            for (int i = 0; i < image_MultiTIFF.NumberOfDirectories(); i++)
            { 
                // Load the Next Sub-TIFF
                   image_MultiTIFF.SetDirectory((short)i);  
                // setting custom tag  
                // image_MultiTIFF.SetField(TiffTag.PAGENUMBER, i, image_MultiTIFF.NumberOfDirectories());
                // image_MultiTIFF.SetField(TiffTag.DATETIME, DateTime.Now); 

                // rewrites directory saving new tag
                   image_MultiTIFF.CheckpointDirectory();
            }  
        }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-23 17:50:25

黑图像最可能的原因是图像数据损坏。

当您更改标记中的某些内容并使用CheckpointDirectoryWriteDirectory保存更改时,库将在文件中的同一位置写入新数据。如果新目录数据大于旧数据,则下一个映像的某些部分可能会被覆盖(即损坏)。

在所有情况下避免腐败的唯一方法是使用RewriteDirectory

请注意,每次对RewriteDirectory的调用都会创建一个目录副本。该目录的旧版本保留在文件中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52456181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档