C# LibTiff.Net - MultiTIFF 更改标签值
C# LibTiff.Net - MultiTIFF change Tag-Values
我想用 LibTiff.net 设置或更改多 TIFF 文件中的一些标签。所以我目前使用 SetDirectory() 切换子图像,更新一些字段并使用 CheckpointDirectory()-Function 检查。当我这样做时,只有生成的多 TIFF 文件中的第一张图像是可见的,其他图像是完全黑色的。即使不使用以下代码更改任何标签,也会发生这种情况。我错过了什么?
如果我在 For 循环外设置 CheckoutDirectory 函数,所有图片都会按需要显示,但我想更改所有 SubTiff 的标签,而不仅仅是最后一个的标签。
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();
}
}
}
黑色图像的最可能原因是图像数据损坏。
当您更改标签中的某些内容并使用 CheckpointDirectory
或 WriteDirectory
保存更改时,库会将新数据写入文件中的相同位置。如果新目录数据大于旧数据,下一个图像的某些部分可能会被覆盖(即损坏)。
在所有情况下避免损坏的唯一方法是使用 RewriteDirectory
。
请注意,每次调用 RewriteDirectory
都会创建一个目录副本。旧版本目录保留在文件中。
我想用 LibTiff.net 设置或更改多 TIFF 文件中的一些标签。所以我目前使用 SetDirectory() 切换子图像,更新一些字段并使用 CheckpointDirectory()-Function 检查。当我这样做时,只有生成的多 TIFF 文件中的第一张图像是可见的,其他图像是完全黑色的。即使不使用以下代码更改任何标签,也会发生这种情况。我错过了什么?
如果我在 For 循环外设置 CheckoutDirectory 函数,所有图片都会按需要显示,但我想更改所有 SubTiff 的标签,而不仅仅是最后一个的标签。
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();
}
}
}
黑色图像的最可能原因是图像数据损坏。
当您更改标签中的某些内容并使用 CheckpointDirectory
或 WriteDirectory
保存更改时,库会将新数据写入文件中的相同位置。如果新目录数据大于旧数据,下一个图像的某些部分可能会被覆盖(即损坏)。
在所有情况下避免损坏的唯一方法是使用 RewriteDirectory
。
请注意,每次调用 RewriteDirectory
都会创建一个目录副本。旧版本目录保留在文件中。