2013-07-08 109 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(Arrays.toString(ImageIO.getReaderFileSuffixes()));'在我的機器它是'[bmp,jpg,jpeg,wbmp,png,gif]'。沒有'tif'。 – johnchen902

回答

7

您正在嘗試讀取不ImageIO的支持的文件格式。

由於johnchen902指出的那樣,ImageIO.getReaderFileSuffixes()返回所支持的後綴列表。 tiff不在該列表中。這就是爲什麼你不能這樣讀。一些外部的庫可能會幫助你。例如:Java Advanced Imaging API支持TIFF。詳情here

+0

感謝您的解釋!我有一個問題,我無法達到鏈接... –

+0

鏈接固定。對不起。 – Burkhard

+0

謝謝,我會試試這個解決方案,並儘快報告它 –