| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
10年前发布

Java读取图片的Exif元数据信息

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