您好,欢迎访问一九零五行业门户网

Java读取图片的Exif元数据信息

package com.drew.metadata; import java.io.file; import java.io.ioexception; import com.drew.imaging.imagemetadatareader; import com.drew.imaging.imageprocessingexception; public class sampleusage { /** * 图片信息获取metadata元数据信息 * @param filename 需要解析的文件 * @return */ public imginfobean parseimginfo (string filename) { file file = new file(filename); imginfobean imginfobean = null; try { metadata metadata = imagemetadatareader.readmetadata(file); imginfobean = printimagetags(file, metadata); } catch (imageprocessingexception e) { system.err.println(error 1a: + e); } catch (ioexception e) { system.err.println(error 1b: + e); } return imginfobean; } /** * 读取metadata里面的信息 * @param sourcefile 源文件 * @param metadata metadata元数据信息 * @return */ private imginfobean printimagetags(file sourcefile, metadata metadata) { imginfobean imginfobean = new imginfobean (); imginfobean.setimgsize(sourcefile.gettotalspace()); imginfobean.setimgname(sourcefile.getname()); for (directory directory : metadata.getdirectories()) { for (tag tag : directory.gettags()) { string tagname = tag.gettagname(); string desc = tag.getdescription(); if (tagname.equals(image height)) { //图片高度 imginfobean.setimgheight(desc); } else if (tagname.equals(image width)) { //图片宽度 imginfobean.setimgwidth(desc); } else if (tagname.equals(date/time original)) { //拍摄时间 imginfobean.setdatetime(desc); } else if (tagname.equals(gps altitude)) { //海拔 imginfobean.setaltitude(desc); } else if (tagname.equals(gps latitude)) { //纬度 imginfobean.setlatitude(pointtolatlong(desc)); } else if (tagname.equals(gps longitude)) { //经度 imginfobean.setlongitude(pointtolatlong(desc)); } } for (string error : directory.geterrors()){ system.err.println(error: + error); } } return imginfobean; } /** * 经纬度转换 度分秒转换 * @param point 坐标点 * @return */ public string pointtolatlong (string point ) { double du = double.parsedouble(point.substring(0, point.indexof(°)).trim()); double fen = double.parsedouble(point.substring(point.indexof(°)+1, point.indexof(')).trim()); double miao = double.parsedouble(point.substring(point.indexof(')+1, point.indexof(\)).trim()); double dustr = du + fen / 60 + miao / 60 / 60 ; return dustr.tostring(); } public static void main(string[] args) { imginfobean imginfobean = new sampleusage().parseimginfo(c:\\dsc_4564.jpg); system.out.println(imginfobean.tostring()); } }
文件信息bean类
package com.drew.metadata; public class imginfobean { private string imgheight ;//图片高度 private string imgwidth ;//图片宽度 private string datetime ;//拍摄时间 private string altitude ;//海拔 private string latitude;//纬度 private string longitude ;//经度 private long imgsize; //文件大小 private string imgname; //文件名称 public long getimgsize() { return imgsize; } public void setimgsize(long imgsize) { this.imgsize = imgsize; } public string getimgname() { return imgname; } public void setimgname(string imgname) { this.imgname = imgname; } public string getimgheight() { return imgheight; } public void setimgheight(string imgheight) { this.imgheight = imgheight; } public string getimgwidth() { return imgwidth; } public void setimgwidth(string imgwidth) { this.imgwidth = imgwidth; } public string getdatetime() { return datetime; } public void setdatetime(string datetime) { this.datetime = datetime; } public string getaltitude() { return altitude; } public void setaltitude(string altitude) { this.altitude = altitude; } public string getlatitude() { return latitude; } public void setlatitude(string latitude) { this.latitude = latitude; } public string getlongitude() { return longitude; } public void setlongitude(string longitude) { this.longitude = longitude; } public string tostring (){ return [图片信息]文件名称:+ this.imgname+ 文件大小:+this.imgsize + 高度:+this.imgheight+ 宽度:+this.imgwidth+ 拍摄时间:+this.datetime+ 海拔:+this.altitude+ 纬度:+this.latitude+ 经度:+this.longitude; } }
其它类似信息

推荐信息