1. 程式人生 > >使用Java程式讀取JPG Tif等格式圖片的exif資訊

使用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