使用Java程序读取JPG Tif等格式图片的exif信息

package com.util;

import java.io.File;

import java.util.Iterator;

import com.drew.imaging.ImageProcessingException;

import com.drew.metadata.Directory;

import com.drew.metadata.Metadata;

import com.drew.metadata.MetadataException;

import com.drew.metadata.exif.ExifDirectory;

import com.drew.metadata.exif.ExifReader;

public class ExifUtil {

public static void main(String[] args) {

try {

ExifReader er =new ExifReader(new File("填照片路径"));//也就用inputstream 或者二进制流

Metadata exif = er.extract();

Iterator itr = exif.getDirectoryIterator();

while (itr.hasNext()) {

Directory directory = (Directory) itr.next();

System.out.println(directory.getString(ExifDirectory.TAG_EXIF_VERSION));

System.out.println(directory.getString(ExifDirectory.TAG_MAKE));

System.out.println(directory.getString(ExifDirectory.TAG_MODEL));

System.out.println(directory.getString(ExifDirectory.TAG_FNUMBER));

System.out.println(directory.getString(ExifDirectory.TAG_EXPOSURE_TIME));

System.out.println(directory.getString(ExifDirectory.TAG_ISO_EQUIVALENT));

System.out.println(directory.getString(ExifDirectory.TAG_SOFTWARE));

System.out.println(directory.getDate(ExifDirectory.TAG_DATETIME_DIGITIZED));

System.out.println(directory.getDate(ExifDirectory.TAG_DATETIME_ORIGINAL));

System.out.println(directory.getString(ExifDirectory.TAG_ORIENTATION));

System.out.println(directory.getString(ExifDirectory.TAG_EXIF_IMAGE_WIDTH));

System.out.println(directory.getString(ExifDirectory.TAG_EXIF_IMAGE_HEIGHT));

System.out.println(directory.getString(ExifDirectory.TAG_X_RESOLUTION));

System.out.println(directory.getString(ExifDirectory.TAG_Y_RESOLUTION));

System.out.println(directory.getString(ExifDirectory.TAG_EXPOSURE_BIAS));

}

} catch (ImageProcessingException e) {

e.printStackTrace();

} catch (MetadataException e) {

e.printStackTrace();

}

}

}

下面给一个实体类,可以方便存储exif信息

package com.util;

import java.util.Date;

/**

* 照片信息

*/

public class Photo {

// EXIF版本

private String exifversion = null;

// 相机品牌

private String make = null;

// 相机型号

private String model = null;

// 光 圈 值

private String fnumber = null;

// 快 門

private String exposuretime = null;

// 感 光 度

private String isoequivalent = null;

// 软 件

private String software = null;

// 原始拍摄时间

private Date originaldatetime = null;

// 数字化时间

private Date digitizeddatetime = null;

// 方 向

private String orientation = null;

// 图片宽度

private String exifimagewidth = null;

// 图片高度

private String exifimageheight = null;

// 水平分辨率

private String xresolution = null;

// 垂直分辨率

private String yresolution = null;

// 曝光补偿

private String exposurebias = null;

public String getExifversion() {

return exifversion;

}

public void setExifversion(String exifversion) {

this.exifversion = exifversion;

}

public String getMake() {

return make;

}

public void setMake(String make) {

this.make = make;

}

public String getModel() {

return model;

}

public void setModel(String model) {

this.model = model;

}

public String getFnumber() {

return fnumber;

}

public void setFnumber(String fnumber) {

this.fnumber = fnumber;

}

public String getExposuretime() {

return exposuretime;

}

public void setExposuretime(String exposuretime) {

this.exposuretime = exposuretime;

}

public String getIsoequivalent() {

return isoequivalent;

}

public void setIsoequivalent(String isoequivalent) {

this.isoequivalent = isoequivalent;

}

public String getSoftware() {

return software;

}

public void setSoftware(String software) {

this.software = software;

}

public Date getOriginaldatetime() {

return originaldatetime;

}

public void setOriginaldatetime(Date originaldatetime) {

this.originaldatetime = originaldatetime;

}

public Date getDigitizeddatetime() {

return digitizeddatetime;

}

public void setDigitizeddatetime(Date digitizeddatetime) {

this.digitizeddatetime = digitizeddatetime;

}

public String getOrientation() {

return orientation;

}

public void setOrientation(String orientation) {

this.orientation = orientation;

}

public String getExifimagewidth() {

return exifimagewidth;

}

public void setExifimagewidth(String exifimagewidth) {

this.exifimagewidth = exifimagewidth;

}

public String getExifimageheight() {

return exifimageheight;

}

public void setExifimageheight(String exifimageheight) {

this.exifimageheight = exifimageheight;

}

public String getXresolution() {

return xresolution;

}

public void setXresolution(String xresolution) {

this.xresolution = xresolution;

}

public String getYresolution() {

return yresolution;

}

public void setYresolution(String yresolution) {

this.yresolution = yresolution;

}

public String getExposurebias() {

return exposurebias;

}

public void setExposurebias(String exposurebias) {

this.exposurebias = exposurebias;

}

@Override

public String toString() {

return "数字化时间:" + digitizeddatetime

+ ", 图片高度:" + exifimageheight + ", 图片宽度:"

+ exifimagewidth + ", EXIF版本:" + exifversion

+ ",曝光补偿:" + exposurebias + ", 快 門:"

+ exposuretime + ", 光 圈 值:" + fnumber + ", 感 光 度:"

+ isoequivalent + ", 相机品牌:" + make + ", 相机型号:" + model

+ ", 方 向:" + orientation + ", 原始拍摄时间:"

+ originaldatetime + ", 软 件:" + software

+ ", 水平分辨率:" + xresolution + ", 垂直分辨率:"

+ yresolution ;

}

}

metadata-extractor-2.4.0-beta-1.jar