2013-07-08 29 views
10

Potrzebuję przekonwertować plik tiff na obraz BufferedImage. I napisał następujący kod:Konwertuj tiff na buforowany obraz (Java)

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

wiem na pewno myfile jest prawidłowo instancję: Problem polega na tym, że po czwartym wierszu kodu IMG jest nadal puste.

Co robię źle? Dziękuję bardzo!

Edit

rozwiązany, używałem następujący kod:

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

Co zwraca myFile.canRead()? [między wierszami 3 i 4] – Burkhard

+0

@Burkhard, zwraca true –

+0

@ DanieleMilani Sprawdź, co wypisuje następująca linia: 'System.out.println (Arrays.toString (ImageIO.getReaderFileSuffixes()));' Na mojej maszynie to to '[bmp, jpg, jpeg, wbmp, png, gif]'. Brak 'tif'. – johnchen902

Odpowiedz

7

Próbujesz odczytać format pliku, który nie jest obsługiwany przez ImageIO.

Jak zauważył johnchen902, ImageIO.getReaderFileSuffixes() zwraca listę obsługiwanych sufiksów. tiff nie znajduje się na tej liście. Dlatego nie możesz tego odczytać w ten sposób. Niektóre zewnętrzne biblioteki mogą ci pomóc. Na przykład: Java Advanced Imaging API obsługuje TIFF. Szczegóły here.

+0

Dzięki za wyjaśnienie! Mam problem, nie mogę połączyć się z linkiem ... –

+0

Naprawiono link. Przepraszam za to. – Burkhard

+0

dziękuję, spróbuję tego rozwiązania i zgłoś jak najszybciej –