linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘网络学院网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > 开发语言 > JAVA >
栏目导栏
  php
  JSP
  ASP
  asp.net
  JAVA
  c/c++/c#
  perl
  JavaScript
  Basic
  Delphi
资料搜索
热门文章
·Ajax实现在textbox中模糊查询显
·Ajax实现分页查询
·JAVA反编译工具jad的简单用法
·基于Spring+Hibernate+Eclip
·java定时执行的三种方法
·读取数码照片中的Exif信息
·JSP获取客户端的浏览器和操作系
·Java文件操作大全
·Java中利用通讯API编写短信软件
·JAVA技术:上传图片的缩放处理
·利用Java实现网页浏览器
·Java编程基础
·Java调用Oracle的过程和函数
·JAVA得到网卡物理地址(Windows
·NetBeans vs Eclipse之性能参数
最新文章
·实例解析:Linux操作系统下Jav
·JAVA得到网卡物理地址(Windows
·Ajax实现在textbox中模糊查询显
·Ajax简单示例之改变下拉框动态
·AJAX如何与后台交互
·Ajax实现分页查询
·Ajax核心:XMLHTTP组件相关技术
·面向Java程序员的Ajax:构建动态
·JSP获取客户端的浏览器和操作系
·提高Java技能的几种简单有效的
·敏捷开发中需掌握移除重复代码
·Java中利用通讯API编写短信软件
·关于String和StringBuffer
·用Java得到硬盘空间
·如何优化JAVA程序设计和编码,
Google
 
读取数码照片中的Exif信息
[ 作者:  加入时间:2007-10-25 13:09:39  来自:Linux联盟收集整理 ]

好久没有来JR了,大概有1年多了,之前一直“野”在外面,这次回来给大家带来点好玩的技术,这次给大家说一下怎样读取数码照片里的Exif信息。

其实数码照片文件中除了Exif,还有GPS、相机厂商信息等,这些都会在相机拍摄时写入照片中,大家可以下载一个Opanda IExif 2.25软件玩玩。

接下来说的是怎样使用我们喜欢的Java语言来读取,首页需要一个第三方的类包附件,这是个老外写的好不容易找到的。

然后就是写个测试类了。

package com.artozi.util.image;

import java.io.*; uaxLinux联盟
import java.sql.*; uaxLinux联盟
import java.util.*;

import com.drew.imaging.jpeg.*; uaxLinux联盟
import com.drew.metadata.*; uaxLinux联盟
import com.drew.metadata.exif.ExifDirectory;

public class ExifInfoWrapper { uaxLinux联盟
private Directory exifDirectory = null; uaxLinux联盟
private static ExifInfoWrapper eiw = null; uaxLinux联盟
public static ExifInfoWrapper getInstance(String filename){ uaxLinux联盟
if (eiw == null) { uaxLinux联盟
eiw = new ExifInfoWrapper(filename); uaxLinux联盟
} uaxLinux联盟
return eiw; uaxLinux联盟
}

public ExifInfoWrapper(String filename){ uaxLinux联盟
File jpegFile = new File(filename); uaxLinux联盟
try { uaxLinux联盟
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);

//读取jpeg源数据信息 uaxLinux联盟
exifDirectory = metadata.getDirectory(ExifDirectory.class);

//读取jpeg中exif目录 uaxLinux联盟
} catch (JpegProcessingException je) { uaxLinux联盟
System.out.println(je); uaxLinux联盟
} catch (Exception ex) { uaxLinux联盟
System.out.println(ex); uaxLinux联盟
} uaxLinux联盟
}

public String getPhotoCreatTime() { uaxLinux联盟
String time = null; uaxLinux联盟
try { uaxLinux联盟
if(exifDirectory.containsTag(ExifDirectory.TAG_DATETIME_ORIGINAL)){ uaxLinux联盟
java.util.Date d = exifDirectory.getDate(ExifDirectory. uaxLinux联盟
TAG_DATETIME_ORIGINAL); //将exif中的日期信息读出 uaxLinux联盟
Timestamp ts = new Timestamp(d.getTime()); uaxLinux联盟
time = ts.toString(); uaxLinux联盟
}else{ uaxLinux联盟
time = ""; uaxLinux联盟
} uaxLinux联盟
} catch (MetadataException ex) { uaxLinux联盟
System.out.println(ex); uaxLinux联盟
time = ""; uaxLinux联盟
} catch(Exception e){ uaxLinux联盟
System.out.println(e); uaxLinux联盟
time = ""; uaxLinux联盟
}finally{ uaxLinux联盟
return time; uaxLinux联盟
} uaxLinux联盟
}

public String showCrameBrand(){ uaxLinux联盟
String brand = null; uaxLinux联盟
try { uaxLinux联盟
if(exifDirectory.containsTag(ExifDirectory.TAG_MODEL)){ uaxLinux联盟
brand = exifDirectory.getString(ExifDirectory. uaxLinux联盟
TAG_MODEL); //将exif中的日期信息读出             uaxLinux联盟
uaxLinux联盟
}else{ uaxLinux联盟
brand = ""; uaxLinux联盟
} uaxLinux联盟
} catch(Exception e){ uaxLinux联盟
System.out.println(e); uaxLinux联盟
}finally{ uaxLinux联盟
return brand; uaxLinux联盟
}

} uaxLinux联盟
uaxLinux联盟
public static void main(String[] args) { uaxLinux联盟
ExifInfoWrapper e = ExifInfoWrapper.getInstance("path"); uaxLinux联盟
System.out.println(e.getPhotoCreatTime()); uaxLinux联盟
System.out.println(e.showCrameBrand()); uaxLinux联盟
}

}

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

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息