想到一個問題, 如何獲得一個圖像文件(比如jpg, bmp, png)的信息. 自己查查文件的格式, 寫一個解析, 應該不困難; 但是找了下現成的, 發現MediaInfo庫已經可以非常好的實現需要的功能了.
MediaInfo可以在sourceforge上找到, 是一個解析視頻,音頻, 圖片等媒體文件的庫. 可以得到文件的編碼/碼率/長度等等信息. 使用也很簡單, 下載的文件中包含了c/java/delphi等語言的sample.
MediaInfo是以dll形式發布的, 所以在Java中使用, 需要JNI. 為了方便, MediaInfo使用JNative庫提供了Java方面的API. 所以還需要下載JNative庫, 同樣也能在sourceforge上找到. 下載以后, 把jar文件放到classpath下, 把JNativeCpp.dll放到MediaInfo.dll同一目錄下. 之后就可以測試了:
MediaInfo mi = new MediaInfo();
mi.Open("c:\test.jpg");
mi.Option("Inform", "General");
System.out.println(mi.Get(MediaInfo.Stream_Image, 0, "Format", MediaInfo.Info_Text, MediaInfo.Info_Name));
System.out.println(mi.Get(MediaInfo.Stream_Image, 0, "Width", MediaInfo.Info_Text, MediaInfo.Info_Name));
System.out.println(mi.Get(MediaInfo.Stream_Image, 0, "Height", MediaInfo.Info_Text, MediaInfo.Info_Name));
System.out.println(mi.Get(MediaInfo.Stream_Image, 0, "Resolution/String", MediaInfo.Info_Text, MediaInfo.Info_Name));
mi.Close();
其中對于各類值該怎么取, MediaInfo的文檔里面都有描述, 就不在這里寫了.
(lff0305)