2013-04-20 76 views
-3

我想從單個文件讀取圖像元數據。 我嘗試下面的代碼:閱讀使用Java從單個文件中獲取元數據

http://johnbokma.com/java/obtaining-image-metadata.html

當我運行它,我得到build successful但沒有任何反應。

public class Metadata { 

    public static void main(String[] args) { 
     Metadata meta = new Metadata(); 
     int length = args.length; 
     for (int i = 0; i < length; i++) 
     meta.readAndDisplayMetadata(args[i]); 
    } 

    void readAndDisplayMetadata(String fileName) { 
     try { 

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

      if (readers.hasNext()) { 

       // pick the first available ImageReader 
       ImageReader reader = readers.next(); 

       // attach source to the reader 
       reader.setInput(iis, true); 

       // read metadata of first image 
       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])); 
       } 
      } 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

} 

請幫助:)

+0

你是如何運行這個程序?在Eclipse中?你如何向程序提供參數?根據這些信息我將在下面編輯我的答案。 – Muel 2013-04-20 02:35:12

+0

我運行在java netbeans 我沒有找到該代碼的文件路徑:( – Luckheart 2013-04-20 02:47:57

+0

你需要提供一個圖像文件的絕對路徑,以使該代碼可以工作,例如:'C:\\ Users \\ luckheart \\ Desktop \\ image.png'您想要加載的圖片的文件名(和位置)是什麼? – Muel 2013-04-20 02:52:19

回答

1

您沒有正確指定文件路徑。下面的變化應該表明這一點!

public static void main(String[] args) { 
    Metadata meta = new Metadata(); 
    int length = args.length; 
    for (int i = 0; i < length; i++) { 
     if (new File(args[i]).exists()) { 
      meta.readAndDisplayMetadata(args[i]); 
     } else { 
      System.out.println("cannot find file: " + args[i]); 
     } 
    } 
} 

編輯 -

我們現在靜態確定要使用的文件更簡單的代碼示例。

public static void main(String[] args) { 
    Metadata meta = new Metadata(); 
    String filename = "C:\\Users\\luckheart\\Pictures\\Sample Pictures\\Koala.jpg"; 
    if (new File(filename).exists()) { 
     meta.readAndDisplayMetadata(filename); 
    } else { 
     System.out.println("cannot find file: " + filename); 
    } 
} 
+0

它沒有工作 仍然沒有發生 – Luckheart 2013-04-20 03:51:44

+0

@Luckheart我編輯了答案來提供一個更簡單的例子。一旦簡單的例子工作,嘗試改變它到前面的例子,並閱讀這個:http:/ /stackoverflow.com/questions/9168759/netbeans-command-line-arguments-properties-run-arguments-not-working在Netbeans中傳入外部文件名。 – Muel 2013-04-20 03:59:54

+0

很好,這就是工作兄弟..... ok thanx很多兄弟 因爲我是新手在java:D – Luckheart 2013-04-21 02:57:52