WEB开发网
开发学院WEB开发Jsp 读取数码照片中的Exif信息 阅读

读取数码照片中的Exif信息

 2008-01-05 08:31:26 来源:WEB开发网   
核心提示: 好久没有来JR了,大概有1年多了,读取数码照片中的Exif信息,之前一直“野”在外面,这次回来给大家带来点好玩的技术,首页需要一个第三方的类包附件,这是个老外写的好不轻易找到的,这次给大家说一下怎样读取数码照片里的Exif信息,其实数码照片文件中除了Exif
 好久没有来JR了,大概有1年多了,之前一直“野”在外面,这次回来给大家带来点好玩的技术,这次给大家说一下怎样读取数码照片里的Exif信息。
其实数码照片文件中除了Exif,还有GPS、相机厂商信息等,这些都会在相机拍摄时写入照片中,大家可以下载一个Opanda IExif 2.25软件玩玩。
接下来说的是怎样使用我们喜欢的java语言来读取,首页需要一个第三方的类包附件,这是个老外写的好不轻易找到的。
然后就是写个测试类了。
  1. package com.artozi.util.image;
  2. import java.io.*;
  3. import java.sql.*;
  4. import java.util.*;
  5. import com.drew.imaging.jpeg.*;
  6. import com.drew.metadata.*;
  7. import com.drew.metadata.exif.ExifDirectory;
  8. public class ExifInfoWrapper {
  9.   PRivate Directory exifDirectory = null;
  10.   private static ExifInfoWrapper eiw = null;
  11.   public static ExifInfoWrapper getInstance(String filename){
  12.     if (eiw == null) {
  13.       eiw = new ExifInfoWrapper(filename);
  14.     }
  15.     return eiw;
  16.   }
  17.   public ExifInfoWrapper(String filename){
  18.     File jpegFile = new File(filename);
  19.     try {
  20.       Metadata metadata = JpegMetadataReader.readMetadata(jpegFile); //读取jpeg源数据信息
  21.       exifDirectory = metadata.getDirectory(ExifDirectory.class); //读取jpeg中exif目录
  22.     } catch (JpegProcessingException je) {
  23.       System.out.println(je);
  24.     } catch (Exception ex) {
  25.       System.out.println(ex);
  26.     }
  27.   }
  28.   public String getPhotoCreatTime() {
  29.     String time = null;
  30.     try {
  31.       if(exifDirectory.containsTag(ExifDirectory.TAG_DATETIME_ORIGINAL)){
  32.         java.util.Date d = exifDirectory.getDate(ExifDirectory.
  33.             TAG_DATETIME_ORIGINAL); //将exif中的日期信息读出
  34.         Timestamp ts = new Timestamp(d.getTime());
  35.         time = ts.toString();
  36.       }else{
  37.         time = "";
  38.       }
  39.     } catch (MetadataException ex) {
  40.       System.out.println(ex);
  41.       time = "";
  42.     } catch(Exception e){
  43.       System.out.println(e);
  44.       time = "";
  45.     }finally{
  46.       return time;
  47.     }
  48.   }
  49.   public String showCrameBrand(){
  50.     String brand = null;
  51.     try {
  52.       if(exifDirectory.containsTag(ExifDirectory.TAG_MODEL)){
  53.         brand = exifDirectory.getString(ExifDirectory.
  54.             TAG_MODEL); //将exif中的日期信息读出
  55.         
  56.         
  57.       }else{
  58.         brand = "";
  59.       }
  60.     } catch(Exception e){
  61.       System.out.println(e);
  62.     }finally{
  63.       return brand;
  64.     }
  65.   }
  66.   
  67.   public static void main(String[] args) {
  68.     ExifInfoWrapper e = ExifInfoWrapper.getInstance("path");
  69.     System.out.println(e.getPhotoCreatTime());
  70.     System.out.println(e.showCrameBrand());
  71.   }
  72. }


Tags:读取 数码照片 Exif

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接