JR 精品文章 - 读取数码照片中的Exif信息
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » 第三方类库 评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
读取数码照片中的Exif信息
owen1944 原创   更新:2006-11-02 15:12:28  版本: 1.0   

好久没有来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. }


之后大家在main方法中填入自己照片的路径,然后大家看吧,我只显示了拍摄日期和相机型号,ExifDirectory是个常量类里面有很多属性,大家感兴趣的话可以试试其他的,我已经把这个小技术用在我自己的网站中 artozi ,多提意见,今天就说这些,下次想想带点什么好玩的来。

版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     9       0
作者其它文章: 作者全部文章
评论人:owen1944 发表时间: Thu Nov 02 15:17:35 CST 2006
我努力上传附件,但好像不行,如果各位下载不到的话,我可以email给大家,见谅。附件:metadata-extractor-2.3.1.jar(86K) 
评论人:mrou2001 发表时间: Thu Dec 07 14:28:43 CST 2006
加油啊,支持[java]
评论人:xmanlandauchosxx 发表时间: Fri Feb 16 11:52:32 CST 2007
thanks[weep]

这个文章共有 3 条评论
主题: 点评《web报表软件-新起点,正确的路》 上一篇文章
返回文章列表 返回〔第三方类库〕
下一篇文章 主题: 程序员的发展之路


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号