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

  • 相关阅读:
    IDEA-各模块间引用出现问题的解决方法
    【MyBatis学习06】_parameter:解决There is no getter for property named in class java.lang.String
    《转载》JVM垃圾回收机制
    java面试复习题四
    Java中excel转换为jpg/png图片 采用aspose-cells-18.6.jar
    POI导出复杂的excel;excel公共样式类;excel拼接定制类;数据科学计数法转为普通值
    java发送邮件无法显示图片 图裂 的解决办法
    pom.xml文件最详细的讲解
    Tomcat启动报Error listenerStart错误 Context [] startup failed due to previous errors
    ora-01031:insufficient privileges解决方法
  • 原文地址:https://www.cnblogs.com/woshuaile/p/10034509.html
Copyright © 2020-2023  润新知