网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  读取数码照片中的exif信息     
  文章作者:未知  文章来源:水木森林  
  查看:109次  录入:管理员--2007-11-17  
   好久没有来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 ,多提意见,今天就说这些,下次想想带点什么好玩的来。

 
 
上一篇: websphere mq程序设计初探    下一篇: 了解hibernate的flushmode.never模式
  相关文档
void main(string[] args)中的args是什么? 11-17
java入门教程:第三章 11-17
jscript 的数据类型 11-16
j2ee中使用spring aop框架和ejb组件 11-16
参数上溯造型解决了错误的方法调用 11-17
如何在 vim 中更好的编辑 java 文件 11-17
j2me应用程序内存优化三招 11-16
编写多线程java应用程序常见问题 11-16
eclipse+myeclipse+lomboz图解安装jsp 11-17
jdbc基础教程之驱动设置 11-16
在coldfusion和j2ee之间共享数据 11-16
cos 方法 11-16
java新手入门:整理scjp听课笔记[转贴] 11-17
[java100例]047、使用javamail发送邮件 11-17
如何学好j2me 11-17
用例子来说明面向对象和面向过程的区别 02-25
在java中定制自己的组件 11-17
深入分析java中webwork中的文件上传机制 11-17
开发设计模式——asp.net中实现观察者模式 (1) 09-12
j2se综合:在java程序中截获控制台输出 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息