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 블록에 넣고 실패 태그를 로그/기록하여 실제로 pseudo-tag인지 확인합니다. – TaW
귀하의 아이디어는 그들을 필터링하는 데 도움이되었습니다. 그래서, 나는 하나 더 질문한다. 가짜 태그 (압축, Photometric, ResUnit, 내 이미지에서 등)를 설정하는 방법? 우리는 모두 수동으로 설정해야합니까? – harsha217