package test;

import java.io.File;
import java.util.Iterator; import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifDirectory; /**
* 测试用于读取图片的EXIF信息
*/
public class ExifTester {
public static void main(String[] args) throws Exception {
File jpegFile = new File("E:\\图片\\2.JPG");
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
Directory exif = metadata.getDirectory(ExifDirectory.class);
Iterator tags = exif.getTagIterator();
while (tags.hasNext()) {
Tag tag = (Tag)tags.next();
System.out.println(tag);
}
}
}

需要jar包:metadata-extractor-2.3.0

运行结果
[Exif] Thumbnail Image Width - 2896 pixels
[Exif] Thumbnail Image Height - 1944 pixels
[Exif] Bits Per Sample - 8 8 8 bits/component/pixel
[Exif] Make - NIKON CORPORATION
[Exif] Model - NIKON D200
[Exif] Orientation - Top, left side (Horizontal / normal)
[Exif] Samples Per Pixel - 3 samples/pixel
[Exif] X Resolution - 300 dots per inch
[Exif] Y Resolution - 300 dots per inch
[Exif] Resolution Unit - Inch
[Exif] Software - Adobe Photoshop CC (Windows)
[Exif] Date/Time - 2014:05:04 13:17:26
[Exif] YCbCr Positioning - Datum point
[Exif] Exposure Time - 1/640 sec
[Exif] F-Number - F4.5
[Exif] Exposure Program - Aperture priority
[Exif] ISO Speed Ratings - 125
[Exif] Exif Version - 2.21
[Exif] Date/Time Original - 2014:05:02 15:00:40
[Exif] Date/Time Digitized - 2014:05:02 15:00:40
[Exif] Components Configuration - YCbCr
[Exif] Compressed Bits Per Pixel - 4 bits/pixel
[Exif] Shutter Speed Value - 1/639 sec
[Exif] Aperture Value - F4.5
[Exif] Exposure Bias Value - 2/3 EV
[Exif] Max Aperture Value - F4.4
[Exif] Metering Mode - Center weighted average
[Exif] Light Source - Unknown
[Exif] Flash - Flash did not fire
[Exif] Focal Length - 70.0 mm
[Exif] User Comment - XCB
[Exif] Sub-Sec Time - 90
[Exif] Sub-Sec Time Original - 90
[Exif] Sub-Sec Time Digitized - 90
[Exif] FlashPix Version - 1.00
[Exif] Color Space - sRGB
[Exif] Exif Image Width - 1944 pixels
[Exif] Exif Image Height - 1944 pixels
[Exif] Sensing Method - One-chip color area sensor
[Exif] File Source - Digital Still Camera (DSC)
[Exif] Scene Type - Directly photographed image
[Exif] CFA Pattern - 0 2 0 2 1 0 2 1
[Exif] Custom Rendered - Normal process
[Exif] Exposure Mode - Auto exposure
[Exif] White Balance - Auto white balance
[Exif] Digital Zoom Ratio - 1
[Exif] Focal Length 35 - 1mm
[Exif] Scene Capture Type - Standard
[Exif] Gain Control - None
[Exif] Contrast - None
[Exif] Saturation - High saturation
[Exif] Sharpness - Hard
[Exif] Subject Distance Range - Unknown
获取需要的数据

package test;

import java.io.File;
import java.util.Iterator; import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifDirectory; /**
* 测试用于读取图片的EXIF信息
* @author Winter Lau
*/
public class PicExif {
public static void main(String[] args) throws Exception {
File jpegFile = new File(
"E:\\图片\\2.JPG");
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
Directory exif = metadata.getDirectory(ExifDirectory.class);
Iterator tags = exif.getTagIterator(); // while(tags.hasNext()){
// System.out.println(tags.next());
// Iterator s = exif.getTagIterator();
// while(s.hasNext()){
// System.out.println(s.next());
// }
// } if(exif.containsTag(ExifDirectory.TAG_MODEL)){
System.out.println("相机型号:"+exif.getDescription(ExifDirectory.TAG_MODEL));
}
if(exif.containsTag(ExifDirectory.TAG_EXPOSURE_TIME)){
System.out.println("曝光时间:"+exif.getDescription(ExifDirectory.TAG_EXPOSURE_TIME));
}
if(exif.containsTag(ExifDirectory.TAG_DATETIME_ORIGINAL)){
System.out.println("拍摄时间:"+exif.getDescription(ExifDirectory.TAG_DATETIME_ORIGINAL));
}
if(exif.containsTag(ExifDirectory.TAG_APERTURE)){
System.out.println("光圈值:"+exif.getDescription(ExifDirectory.TAG_APERTURE));
}
if(exif.containsTag(ExifDirectory.TAG_FOCAL_LENGTH)){
System.out.println("焦距:"+exif.getDescription(ExifDirectory.TAG_FOCAL_LENGTH));
}
if(exif.containsTag(ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT)){
System.out.println("图片尺寸:"+exif.getDescription(ExifDirectory.TAG_THUMBNAIL_IMAGE_HEIGHT));
} }
}
运行结果:

相机型号:NIKON D200
曝光时间:1/640 sec
拍摄时间:2014:05:02 15:00:40
光圈值:F4.5
焦距:70.0 mm
图片尺寸: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. 缺少编译器要求的成员“System.Runtime.CompilerServices.ExtensionAttribute..ctor” 解决方案

    我自己使用的解决方法 错误产生环境及非完美解决办法 错误提示:缺少编译器要求的成员"System.Runtime.CompilerServices.ExtensionAttribute..c ...

  2. 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC

    非常感谢OSC提供了这么好的一个国内的免费的git托管平台.这里简单说下TortoiseGit操作的流程.很傻瓜了 首先你要准备两个软件,分别是msysgit和tortoisegit,乌龟还可以在下载 ...

  3. Java [Leetcode 238]Product of Array Except Self

    题目描述: Given an array of n integers where n > 1, nums, return an array output such that output[i]  ...

  4. delphi 转换sql server 中的 bit类型

    FieldByName('e').AsBoolean = false 其中e为 sql server 中的bit类型.

  5. JAVA深复制(深克隆)与浅复制(浅克隆)

    1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不 复制它所引用的对象. 1. ...

  6. 如何清除win7开机密码

    一.电脑已经登录到系统,但是忘记了密1对于这种情况是最简单的,其实只需要将密码取消就可以了右键单击桌面上我的电脑,选择管理即可进入计算机管理界面2依次展开系统工具--本地用户和组--用户,在右侧选择要 ...

  7. codeforces 685B Kay and Snowflake 树的重心

    分析:就是找到以每个节点为根节点的树的重心 树的重心可以看这三篇文章: 1:http://wenku.baidu.com/link?url=yc-3QD55hbCaRYEGsF2fPpXYg-iO63 ...

  8. Allegro从.brd文件中导出器件封装

    打开.brd文件,File→Export→Libraries,除了No libraries dependencies之外,所有选项都勾选上,设定好存放路径之后,Export. 注意事项: 1. 一般的 ...

  9. oracleasm方式创建ASM

    1.准备oracleasm包 [root@localhost oracle]# uname -r 2.6.18-164.el5 [oracle@localhost ~]$ ls -l total 26 ...

  10. CATALOGUE 目录

    1 语言基础 1.1 c/c++ [转]C/C++ 存储类型 作用域 连接类型 [转]C/C++内存划分 [转]C/C++除法实现方式及负数取模详解 [转]为什么C++编译器不能支持对模板的分离式编译 ...