2013-07-08 23 views
10

Ho bisogno di convertire un file tiff in una BufferedImage. Ho scritto il seguente codice:Converti un tiff in un'immagine bufferizzata (Java)

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

che so per certo è istanziato myFile correttamente: il problema è che dopo la quarta riga di codice IMG è ancora nulla.

Cosa sto sbagliando? Grazie mille!

Modifica

risolto, ho usato il seguente codice:

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

Cosa restituisce myFile.canRead()? [tra le righe 3 e 4] – Burkhard

+0

@Burkhard, restituisce true –

+0

@DanieleMilani Controlla cosa stampa la seguente riga: 'System.out.println (Arrays.toString (ImageIO.getReaderFileSuffixes()));' Sulla mia macchina è '[bmp, jpg, jpeg, wbmp, png, gif]'. Nessun 'tif'. – johnchen902

risposta

7

Si sta cercando di leggere un formato di file che non è supportato da ImageIO.

Come indicato da johnchen902, lo ImageIO.getReaderFileSuffixes() restituisce un elenco di suffissi supportati. tiff non è in quella lista. Ecco perché non puoi leggerlo in questo modo. Alcune librerie esterne potrebbero aiutarti. Ad esempio: l'API Java Advanced Imaging supporta TIFF. Dettagli here.

+0

Grazie per la spiegazione! Ho un problema, non riesco a raggiungere il link ... –

+0

Link risolto. Perdonami per quello. – Burkhard

+0

grazie, proverò questa soluzione e riferirò appena possibile –