2016-04-13 27 views
0

我一直在閱讀SO和Oracle全天學習如何從.jpg圖像中提取元數據(提取嵌入圖像中的GPS數據)。我處於一個沒有很多第三方庫選項的環境中。Java ImageReader返回無圖像

我偶然發現了的ImageIO,ImageReader的,組合的IIOMetadata但我有問題:

File file = new File("/home/djtorrey/Pictures/test.jpg"); 
    System.out.println(file.isFile()); 
    ImageInputStream iis = ImageIO.createImageInputStream(file); 

    Iterator readers = ImageIO.getImageReadersByFormatName("jpg"); 
    ImageReader reader = (ImageReader)readers.next(); 

    reader.setInput(iis,true); 
    int value = reader.getNumImages(false); 
    System.out.println(value); 

這是我現在測試代碼。正如你所看到的,我正在創建一個指向圖像的文件對象,驗證它將它視爲一個文件(它確實),然後基於該文件創建一個ImageInputStream。我已經通過將文件推入BufferedImage對象並從中讀取數據來驗證它沒有損壞。

我抓取一個jpg的ImageReader,將ImageReader輸入設置爲ImageInputStream,然後檢查它看到的圖像數量。

我應該看到1代表我指向的一個圖像,但它一直返回-1,表示沒有圖像。

BLUF:在上面的代碼中,我在做錯了什麼,它沒有正確地看到我指向的圖像?

+1

是否'reader.getNumImages(真)'返回不同的值? – VGR

+1

**返回值-1僅表示需要進行搜索以確定流**中剩餘圖像的數量:[https://docs.oracle.com/javase/7/docs/api/javax/imageio /ImageReader.html#getNumImages(boolean)](https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageReader.html#getNumImages(boolean)) – Gilfoyle

+0

@VGR不,它是 - 1。 –

回答