2014-09-21 49 views
1

我发现了一些从图片中读取元信息的例子,但是如果我输入一个原始文件,它会失败。 (NEF)从RAW中读取元信息

void readAndDisplayMetadata(String fileName) { 
    try { 
     File file = new File(fileName); 

     ImageInputStream iis = ImageIO.createImageInputStream(file); 
     Iterator<ImageReader> readers = ImageIO.getImageReaders(iis); 

     if (readers.hasNext()) { //here fails 

      ImageReader reader = readers.next(); 
      reader.setInput(iis, true); 
      IIOMetadata metadata = reader.getImageMetadata(0); 

      String[] names = metadata.getMetadataFormatNames(); 
      int length = names.length; 
      for (int i = 0; i < length; i++) { 
       System.out.println("Format name: " + names[ i ]); 
       displayMetadata(metadata.getAsTree(names[i])); //print out as xml 
      } 
     } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

我用该方法创建了一个对象,并用文件“test.nef”调用它失败。如果我尝试test.png它的作品。我不知道这有什么问题。我猜测读者不能处理原始格式。有没有更好的方式来获取图片的元信息? (像光圈,iso等)

回答

0

ImageIO支持JPEG,PNG,BMP,WBMP,要注册自定义格式,请使用SPI

+0

对于RAW格式(如NEF)的SPI上的任何示例? – BennX 2014-09-21 10:26:54

+0

jrawio http://jrawio.rawdarkroom.org/ – sol4me 2014-09-21 10:29:25