2015-01-15 4 views
0

У меня возникли проблемы с загрузкой файлов 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; 
      } 

     } 

Спасибо!

+0

Не использовали libtiff.net самостоятельно, но возможно ли, что файлы выложены как полосы, а не RGBA-пиксели? Это довольно распространено в типах изображений ГИС. Я вижу, что в классе Tiff есть метод ReadRGBAStrip ... (Кроме того, черепица распространена для форматов изображений GIS.) – adv12

+1

Спасибо, adv12. Это звучит как многообещающий ответ. Я попробую и отправлю отчет. – BruceDoh

+1

Я смог успешно загрузить полосу tiff с помощью ReadRGBAStrip. Еще раз спасибо за этот ответ, возможно, вы только что спасли мне много ударов головой о стену! PS. Я новичок на этом сайте, а не на 100% уверен, как все это работает, но если вы хотите представить это как ответ, я могу отметить его как правильный ответ. (что дает вам какие-то точки репутации или еще что-то?) – BruceDoh

ответ

0

Без файла для воспроизведения проблемы я могу быть на 100% уверен, но похоже, что ваш файл не может быть преобразован в растровый RGBA с помощью LibTiff.Net.

Это не ошибка, просто вы используете не очень популярный вкус TIFF. Некоторые говорят, что TIFF - это Тысяча Несовместимых Форм-файлов. И в этом утверждении есть определенная правда.

Библиотека может читать (и расшифровывать!) Ваш файл. Вы можете получить декодированный растровый метод, используя методы ReadEncodedStrip и/или ReadScanline. Задача преобразования вашего растра в RGBA предоставляется вам.

И не забывайте, что не каждое изображение может быть преобразовано в RGBA без потери некоторых данных изображения.

+0

Я думаю, re право. Я отказался от попыток загрузить файлы tiff, созданные этими программами, и теперь я просто разбираюсь с простыми файлами ascii. Спасибо за ответы. – BruceDoh

 Смежные вопросы

  • Нет связанных вопросов^_^