欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java从图片中读取图片的元数据Exif信息,元数据exif,一般情况下是java程序

来源: javaer 分享于  点击 38617 次 点评:100

Java从图片中读取图片的元数据Exif信息,元数据exif,一般情况下是java程序


一般情况下是java程序读取不到gps等扩展信息的。如果想要解析到里面的信息需要下载一个jar包,metadata-extractor-2.6.4.jar(下载地址:http://code.google.com/p/metadata-extractor/),这个jar提供了支持获取扩展信息的功能。```javaimport 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类。```javapublic 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;    }}
相关栏目:

用户点评