1. package test;
  2.  
  3. import java.io.File;
  4. import java.util.Iterator;
  5.  
  6. import com.drew.imaging.jpeg.JpegMetadataReader;
  7. import com.drew.metadata.Directory;
  8. import com.drew.metadata.Metadata;
  9. import com.drew.metadata.Tag;
  10. import com.drew.metadata.exif.ExifDirectory;
  11.  
  12. /**
  13. * 测试用于读取图片的EXIF信息
  14. */
  15. public class ExifTester {
  16. public static void main(String[] args) throws Exception {
  17. File jpegFile = new File("E:\\图片\\2.JPG");
  18. Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
  19. Directory exif = metadata.getDirectory(ExifDirectory.class);
  20. Iterator tags = exif.getTagIterator();
  21. while (tags.hasNext()) {
  22. Tag tag = (Tag)tags.next();
  23. System.out.println(tag);
  24. }
  25. }
  26. }

需要jar包:metadata-extractor-2.3.0

  1. 运行结果
  2. [Exif] Thumbnail Image Width - 2896 pixels
  3. [Exif] Thumbnail Image Height - 1944 pixels
  4. [Exif] Bits Per Sample - 8 8 8 bits/component/pixel
  5. [Exif] Make - NIKON CORPORATION
  6. [Exif] Model - NIKON D200
  7. [Exif] Orientation - Top, left side (Horizontal / normal)
  8. [Exif] Samples Per Pixel - 3 samples/pixel
  9. [Exif] X Resolution - 300 dots per inch
  10. [Exif] Y Resolution - 300 dots per inch
  11. [Exif] Resolution Unit - Inch
  12. [Exif] Software - Adobe Photoshop CC (Windows)
  13. [Exif] Date/Time - 2014:05:04 13:17:26
  14. [Exif] YCbCr Positioning - Datum point
  15. [Exif] Exposure Time - 1/640 sec
  16. [Exif] F-Number - F4.5
  17. [Exif] Exposure Program - Aperture priority
  18. [Exif] ISO Speed Ratings - 125
  19. [Exif] Exif Version - 2.21
  20. [Exif] Date/Time Original - 2014:05:02 15:00:40
  21. [Exif] Date/Time Digitized - 2014:05:02 15:00:40
  22. [Exif] Components Configuration - YCbCr
  23. [Exif] Compressed Bits Per Pixel - 4 bits/pixel
  24. [Exif] Shutter Speed Value - 1/639 sec
  25. [Exif] Aperture Value - F4.5
  26. [Exif] Exposure Bias Value - 2/3 EV
  27. [Exif] Max Aperture Value - F4.4
  28. [Exif] Metering Mode - Center weighted average
  29. [Exif] Light Source - Unknown
  30. [Exif] Flash - Flash did not fire
  31. [Exif] Focal Length - 70.0 mm
  32. [Exif] User Comment - XCB
  33. [Exif] Sub-Sec Time - 90
  34. [Exif] Sub-Sec Time Original - 90
  35. [Exif] Sub-Sec Time Digitized - 90
  36. [Exif] FlashPix Version - 1.00
  37. [Exif] Color Space - sRGB
  38. [Exif] Exif Image Width - 1944 pixels
  39. [Exif] Exif Image Height - 1944 pixels
  40. [Exif] Sensing Method - One-chip color area sensor
  41. [Exif] File Source - Digital Still Camera (DSC)
  42. [Exif] Scene Type - Directly photographed image
  43. [Exif] CFA Pattern - 0 2 0 2 1 0 2 1
  44. [Exif] Custom Rendered - Normal process
  45. [Exif] Exposure Mode - Auto exposure
  46. [Exif] White Balance - Auto white balance
  47. [Exif] Digital Zoom Ratio - 1
  48. [Exif] Focal Length 35 - 1mm
  49. [Exif] Scene Capture Type - Standard
  50. [Exif] Gain Control - None
  51. [Exif] Contrast - None
  52. [Exif] Saturation - High saturation
  53. [Exif] Sharpness - Hard
  54. [Exif] Subject Distance Range - Unknown
  1. 获取需要的数据
  2.  
  3. package test;
  4.  
  5. import java.io.File;
  6. import java.util.Iterator;
  7.  
  8. import com.drew.imaging.jpeg.JpegMetadataReader;
  9. import com.drew.metadata.Directory;
  10. import com.drew.metadata.Metadata;
  11. import com.drew.metadata.exif.ExifDirectory;
  12.  
  13. /**
  14. * 测试用于读取图片的EXIF信息
  15. * @author Winter Lau
  16. */
  17. public class PicExif {
  18. public static void main(String[] args) throws Exception {
  19. File jpegFile = new File(
  20. "E:\\图片\\2.JPG");
  21. Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
  22. Directory exif = metadata.getDirectory(ExifDirectory.class);
  23. Iterator tags = exif.getTagIterator();
  24.  
  25. // while(tags.hasNext()){
  26. // System.out.println(tags.next());
  27. // Iterator s = exif.getTagIterator();
  28. // while(s.hasNext()){
  29. // System.out.println(s.next());
  30. // }
  31. // }
  32.  
  33. if(exif.containsTag(ExifDirectory.TAG_MODEL)){
  34. System.out.println("相机型号:"+exif.getDescription(ExifDirectory.TAG_MODEL));
  35. }
  36. if(exif.containsTag(ExifDirectory.TAG_EXPOSURE_TIME)){
  37. System.out.println("曝光时间:"+exif.getDescription(ExifDirectory.TAG_EXPOSURE_TIME));
  38. }
  39. if(exif.containsTag(ExifDirectory.TAG_DATETIME_ORIGINAL)){
  40. System.out.println("拍摄时间:"+exif.getDescription(ExifDirectory.TAG_DATETIME_ORIGINAL));
  41. }
  42. if(exif.containsTag(ExifDirectory.TAG_APERTURE)){
  43. System.out.println("光圈值:"+exif.getDescription(ExifDirectory.TAG_APERTURE));
  44. }
  45. if(exif.containsTag(ExifDirectory.TAG_FOCAL_LENGTH)){
  46. System.out.println("焦距:"+exif.getDescription(ExifDirectory.TAG_FOCAL_LENGTH));
  47. }
  48. if(exif.containsTag(ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT)){
  49. System.out.println("图片尺寸:"+exif.getDescription(ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT));
  50. }
  51.  
  52. }
  53. }
  1. 运行结果:
  2.  
  3. 相机型号:NIKON D200
  4. 曝光时间:1/640 sec
  5. 拍摄时间:2014:05:02 15:00:40
  6. 光圈值:F4.5
  7. 焦距:70.0 mm
  8. 图片尺寸:1944 pixels

java获取照片相关属性的更多相关文章

  1. Java 获取对象全部属性 包括 父类属性

    今天由于业务需要,看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanU ...

  2. JAVA获取系统相关信息

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003596 获取JRE系统相关参数 java 通过S ...

  3. Java获取系统相关信息System.getProperty()

    java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...

  4. Java 获取操作系统相关的内容

    package com.hikvision.discsetup.util; import java.lang.reflect.Field; import java.net.InetAddress; i ...

  5. System.getProperty()获取系统的相关属性

    我们在编程的过程中有时候需要获取系统的相关属性,今天就让我们一起来学习学习如何获取系统的相关属性 至于System.getProperty(param)中的各个参数的概念请看下表. java.vers ...

  6. Java获取环境变量和系统属性

    Java获取服务器环境变量和JVM系统变量    当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty() ...

  7. 随手记一次用C#正则表达式获取下拉菜单html标签<select>以及相关属性值

    随手记一次用C#正则表达式获取下拉菜单html标签<select>以及相关属性值 1:有如下html: .................. <select id="aaa ...

  8. java利用反射获取类的属性及类型

    java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...

  9. java程序启动 环境属性的获取

    System.getProperties().list(System.out); 如果要获取某一个属性,例如常见的“操作系统” 则  System.getProperty("os.name& ...

随机推荐

  1. ASP.NET缓存OutputCache和Response.Cache之C#后台设置

    一.ASPX页面缓存页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam=&qu ...

  2. EF 更新指定的字段

    假如你有个表,有30个字段,你只想更新其中的1到2个字段的话,就可以用得上这篇文章 作用:类似于我们以前的sql代码 update xxx表 set name='ok',pwd='ok' where ...

  3. hdu 4607 Park Visit(树上最长链)

    求树上最长链:两遍搜索. 第一次从树上任意点开始,最远点必然是某一条最长链上的端点u. 第二次从u开始,最远点即该最长链的另一端点. 先在最长链上走,不足再去走支链. 把询问数m错打成n,狠狠wa了一 ...

  4. I.MX6 默认打开 USB adb

    /***************************************************************************** * I.MX6 默认打开 USB adb ...

  5. Java Socket(1): 入门

    前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那 ...

  6. Oracle RAC OCR 的备份与恢复

    Oracle Clusterware把整个集群的配置信息放在共享存储上,这些信息包括了集群节点的列表.集群数据库实例到节点的映射以及CRS应用程序资源信息.也即是存放在ocr 磁盘(或者ocfs文件) ...

  7. 云计算服务模型,第 3 部分: 软件即服务(PaaS)

    英文原文:Cloud computing service models, Part 3: Software as a Service 软件即服务 (SaaS) 为商用软件提供基于网络的访问.您有可能已 ...

  8. java web 学习十五(jsp基础语法)

    任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. 一.JSP模版元素 JSP页面中的HTML内容称之 ...

  9. 为什么你写的Python运行的那么慢呢?

    大约在一年前,也就是2013年在Waza(地名),Alex Gaynor提到了一个很好的话题:为什么用Python.Ruby和Javascript写的程序总是运行的很慢呢?正如他强调的,关键就是现在出 ...

  10. 在WinForm编程中犯的一些错误

    1.一直以为,MouseClick事件在鼠标点击时发生,MouseDoubleClick事件在鼠标双击时发生.那么在单击鼠标时会调用MouseClick事件处理程序,双击鼠标时会调用MouseDoub ...