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;
}
}