using (Tiff input = Tiff.Open(@"new.tif", "r"))
{
if (input == null)
{
MessageBox.Show("Could not open incoming image");
return;
}
if (input.IsTiled())
{
MessageBox.Show("Could not process tiled image");
return;
}
using (Tiff output = Tiff.Open("newnew.tif", "w"))
{
int numberOfDirectories = input.NumberOfDirectories();
int rps = 3500;
for (short i = 0; i < numberOfDirectories; ++i)
{
input.SetDirectory(i);
copyTags(input, output);
copyStrips(input, output);
output.SetField(TiffTag.ROWSPERSTRIP,rps);
output.WriteDirectory();
}
output.Close();
}
}
当我在“output.SetField(TiffTag.ROWSPERSTRIP,rps)”步骤之后调试输出值时,ROWSPERSTRIP标记值仍然是旧值并且未设置为新值
当我在“output.WriteDirectory()”步骤之后调试输出值时,ROWSPERSTRIP标记值突然设置为-1
任何人都可以解释这种奇怪的行为吗?
答案 0 :(得分:2)
如果copyTags(input, output);
和copyStrips(input, output)
执行了他们的名字暗示他们写入输出流,对吧?
然而,根据docs有一些,实际上相当某些字段,您在开始编写后无法设置。
引用:
TiffTag.ROWSPERSTRIP - 将数据写入文件/流后,标记的值可能不会更改。
所以我猜所有这些标记字段必须先设置。