using (Tiff iimage = Tiff.Open("new.tif", "r"))
{
Tiff newiimage = Tiff.Open("newnew.tif", "w");
if (image == null)
{
MessageBox.Show("Could not open incoming image");
return;
}
using (StreamWriter writer = new StreamWriter("EnumerateTiffTags.txt"))
{
short numberOfDirectories = iimage.NumberOfDirectories();
for (short d = 0; d < numberOfDirectories; ++d)
{
iimage.SetDirectory((short)d);
for (ushort t = ushort.MinValue; t < ushort.MaxValue; ++t)
{
TiffTag tag = (TiffTag)t;
var value = iimage.GetField(tag);
if (value != null)
{
for (int j = 0; j < value.Length; j++)
{
writer.WriteLine("{0}", tag.ToString());
writer.WriteLine("{0} : {1}",
value[j].Value.GetType().ToString(), value[j].ToString());
}
newiimage.SetField(tag, value);// this line is giving me..
// an error "Unable to cast object of type 'BitMiracle.LibTiff.Classic.FieldValue[]'
// to type 'System.IConvertible'"
}
}
}
}
}
我正在打開讀取標記值並將它們寫入另一個TIFF文件的文件。 SetField函數中出現問題。 我試着調試它,一切都很好,不能完全弄清楚,爲什麼它會拋出一個錯誤。使用Libtiff複製TIFF圖像
好的謝謝你的信息....所以,通過複製標籤複製TIFF圖像並不像我想的那麼簡單 – harsha217
好吧,首先,你可以嘗試簡單地包裝SetField在try-catch塊中,並記錄/寫出要檢查的失敗標籤,如果它們確實是僞標籤。 – TaW
你的想法幫助我過濾它們。所以,我還有一個問題。如何設置僞標籤(Compression,Photometric,ResUnit等在我的圖像中)?我們應該手動設置它們全部? – harsha217