2013-07-08 1 views
10

Мне нужно преобразовать файл tiff в BufferedImage. Я написал следующий код:Преобразование tiff в буферизованное изображение (Java)

String filepath = "C:\\tiffFolder\\"; 
String filename = "myTiffImage.tif"; 
File myFile = new File (filepath + filename); 
BufferedImage img = ImageIO.read(myFile); 

Я знаю наверняка Myfile правильно инстанцированный: Проблема заключается в том, что после четвертой строки кода IMG еще пустая.

Что я делаю неправильно? Большое спасибо!

Редактировать

решаемые, я использовал следующий код:

FileSeekableStream stream = new FileSeekableStream(filepath + filename); 
TIFFDecodeParam decodeParam = new TIFFDecodeParam(); 
decodeParam.setDecodePaletteAsShorts(true); 
ParameterBlock params = new ParameterBlock(); 
params.add(stream); 
RenderedOp image1 = JAI.create("tiff", params); 
BufferedImage img = image1.getAsBufferedImage(); 
+0

Что возвращает myFile.canRead()? [между строками 3 и 4] – Burkhard

+0

@Burkhard возвращает true –

+0

@DanieleMilani Проверьте, что распечатывает следующую строку: 'System.out.println (Arrayys.toString (ImageIO.getReaderFileSuffixes()));' На моей машине это это '[bmp, jpg, jpeg, wbmp, png, gif]'. Нет 'tif'. – johnchen902

ответ

7

Вы пытаетесь прочитать формат файла, который не поддерживается ImageIO.

Как указал johnchen902, ImageIO.getReaderFileSuffixes() возвращает список суффиксов, которые поддерживаются. tiff не входит в этот список. Вот почему вы не можете это прочитать. Некоторые внешние библиотеки могут вам помочь. Например: API расширенной визуализации Java поддерживает TIFF. Подробности here.

+0

Спасибо за объяснение! У меня проблема, я не могу связаться со ссылкой ... –

+0

Ссылка исправлена. Простите за это. – Burkhard

+0

спасибо, я попробую это решение и сообщит как можно скорее –