У меня возникли проблемы с загрузкой файлов Tiff в C#. Я загрузил несколько примеров файлов tiff и смог их загрузить, но когда я пытаюсь загрузить любые файлы tiff, созданные из PCI Geomatica или ArcGIS, вызов ReadRGBAImage завершается с ошибкой (возвращает false). Помимо IMAGEWIDTH и IMAGELENGTH, все те же теги, которые я пытался извлечь, вернули null (например, XRESOLUTION). У кого-нибудь есть идеи относительно того, почему это происходит? Соответствующий код приведен ниже:Почему файлы Tiff не загружаются с TiffLib.NET
using (Tiff tif = Tiff.Open(fileName, "r"))
{
// Find the width and height of the image
FieldValue[] value = tif.GetField(TiffTag.IMAGEWIDTH);
int width = value[0].ToInt();
value = tif.GetField(TiffTag.IMAGELENGTH);
int height = value[0].ToInt();
// Read the image into the memory buffer
int[] raster = new int[height * width];
if (!tif.ReadRGBAImage(width, height, raster))
{
System.Windows.Forms.MessageBox.Show("Could not read image");
return null;
}
}
Спасибо!
Не использовали libtiff.net самостоятельно, но возможно ли, что файлы выложены как полосы, а не RGBA-пиксели? Это довольно распространено в типах изображений ГИС. Я вижу, что в классе Tiff есть метод ReadRGBAStrip ... (Кроме того, черепица распространена для форматов изображений GIS.) – adv12
Спасибо, adv12. Это звучит как многообещающий ответ. Я попробую и отправлю отчет. – BruceDoh
Я смог успешно загрузить полосу tiff с помощью ReadRGBAStrip. Еще раз спасибо за этот ответ, возможно, вы только что спасли мне много ударов головой о стену! PS. Я новичок на этом сайте, а не на 100% уверен, как все это работает, но если вы хотите представить это как ответ, я могу отметить его как правильный ответ. (что дает вам какие-то точки репутации или еще что-то?) – BruceDoh