想到一个问题, 如何获得一个图像文件(比如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)