使用 metadata-extractor 解析图片 exif 元数据信息

标签: metadata extractor 解析 | 发表时间:2013-01-06 09:52 | 作者:
出处:http://www.iteye.com

import java.io.File;

import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.exif.ExifIFD0Directory;
import com.drew.metadata.exif.ExifSubIFDDirectory;

public class TestExif {

	/**
	 * @param args
	 * @throws Exception 
	 * @throws  
	 */
	public static void main(String[] args) throws Exception {
		File imgFile = new File("F:/IMG_0538.JPG");
		Metadata metadata = ImageMetadataReader.readMetadata(imgFile);
        for (Directory directory : metadata.getDirectories()) {

          
            
            if("ExifSubIFDDirectory".equalsIgnoreCase( directory.getClass().getSimpleName() )){
            	
            	//光圈F值=镜头的焦距/镜头光圈的直径
	            System.out.println("光圈值: f/" + directory.getString(ExifSubIFDDirectory.TAG_FNUMBER) );
	            
	            System.out.println("曝光时间: " + directory.getString(ExifSubIFDDirectory.TAG_EXPOSURE_TIME)+ "秒" );
	            System.out.println("ISO速度: " + directory.getString(ExifSubIFDDirectory.TAG_ISO_EQUIVALENT) );
	            System.out.println("焦距: " + directory.getString(ExifSubIFDDirectory.TAG_FOCAL_LENGTH) + "毫米" );
	            
	            System.out.println("拍照时间: " + directory.getString(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL) );
	            System.out.println("宽: " + directory.getString(ExifSubIFDDirectory.TAG_EXIF_IMAGE_WIDTH) );
	            System.out.println("高: " + directory.getString(ExifSubIFDDirectory.TAG_EXIF_IMAGE_HEIGHT) );
	            
        	}
            
            if("ExifIFD0Directory".equalsIgnoreCase( directory.getClass().getSimpleName() )){
	            System.out.println("照相机制造商: " + directory.getString(ExifIFD0Directory.TAG_MAKE) );
	            System.out.println("照相机型号: " + directory.getString(ExifIFD0Directory.TAG_MODEL) );
	            System.out.println("水平分辨率: " + directory.getString(ExifIFD0Directory.TAG_X_RESOLUTION) );
	            System.out.println("垂直分辨率: " + directory.getString(ExifIFD0Directory.TAG_Y_RESOLUTION) );
            }
        }

	}

}

 

 

 

示例输出如下:

 

光圈值: f/4

曝光时间: 1/500秒

ISO速度: 80

焦距: 6毫米

拍照时间: 2011:06:11 08:05:40

宽: 3648

高: 2736

照相机制造商: Canon

照相机型号: Canon PowerShot SX120 IS

水平分辨率: 180

垂直分辨率: 180


 

 

 

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [metadata extractor 解析] 推荐:

使用 metadata-extractor 解析图片 exif 元数据信息

- - ITeye博客
//光圈F值=镜头的焦距/镜头光圈的直径. System.out.println("光圈值: f/" + directory.getString(ExifSubIFDDirectory.TAG_FNUMBER) );. System.out.println("曝光时间: " + directory.getString(ExifSubIFDDirectory.TAG_EXPOSURE_TIME)+ "秒" );.

开源网页正文提取cx-extractor

- - 脚本爱好者
基于行块分布函数的通用网页正文抽取:线性时间、不建DOM树、与HTML标签无关. 对于Web信息检索来说,网页正文抽取是后续处理的关键. 虽然使用正则表达式可以准确的抽取某一固定格式的页面,但面对形形色色的HTML,使用规则处理难免捉襟见肘. 能不能高效、准确的将一个页面的正文抽取出来,并做到在大规模网页范围内通用,这是一个直接关系上层应用的难题.

ETL之metadata (讲了pentato 的kettle 的元数据) - sunnywang - IT博客

- -
--  商业智能平台研究:ETL之metadata. 元数据的定义就是:描述数据的数据,你非要问什么描述元数据,还是元数据本身,UML中也有这种概念,只不过是描述的对象不一样罢了.     让我们解释的更加通俗易懂一些吧,在javaSE中也有metadata的概念,最早的就算是JavaDoc了,在5.0之后,Annotation就是大量的使用metadata了,这是关于源代码的数据,具体来说就是关于Java的类、方法、字段等关联的附加数据.

[来自异次元] Universal Extractor 万能解包器 – 从安装包解压提取绿色文件的工具

- Elrond - 异次元软件世界
        想信大家对软件安装包中捆绑的“东西”都很不喜欢吧. 有时下载一个小软件,本来是绿色的,但安装包里却包含了不少流氓软件,有些甚至会在安装时不怀好意地修改你的系统. 如果软件安装包可以像RAR压缩包一样,把所有文件解压出来,只提取有用的文件而不用执行安装过程那该多好啊.         Universal Extractor 是一款近乎于万能的文件提取器,支持的文件类型多达40多种.

解析DynamoDB

- - 技术改变世界 创新驱动中国 - 《程序员》官网
DynamoDB是Amazon最新发布的NoSQL产品. 本文在介绍DynamoDB特性的基础上,将其与SimpleDB、Cassandra和MongoDB进行了分析和比较. 在NoSQL概念日益火爆的今天,市场上又增加了一个重量级的NoSQL产品—DynamoDB,它是Amazon AWS于2012年1月18日发布的.

xml sax解析

- - 移动开发 - ITeye博客
最近一直在做接口,主要用对xml的解析用的是sax,下面我对sax的几种写法做了一个测试:. System.out.println("耗时:"+(end-start));. System.out.println("当前 Java 虚拟机中的使用内存量:" + (freeMemory01-freeMemory02) + " 字节");.

mysql explain 解析

- - SQL - 编程语言 - ITeye博客
Mysql Explain 详解. 例如: explain select * from t3 where id=3952602;. 二.explain输出解释. | id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |.

java解析APK

- - Linux - 操作系统 - ITeye博客
1、结合安卓提供apktool工具,用java执行cmd解析命令获取apk信息. 2、利用相关jar包里的集成方法解析apk. 这里只给出第二种方法,因为第一种方法在linux服务器下会出现不在控制范围之内的结果. // 将解压文件对象转列举对象. // 获得名为AndroidManifest.xml的文件.

sql 解析器

- - zzm
// parser得到AST. // 将AST通过visitor输出. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

java解析xml数据---sax解析器

- - ITeye博客
下面是handler解析数据的方法. private HashMap map = null;// 存储单个解析的完整对象. private List> list = null;// 存储全部的解析对象. private String currentTag = null; // 正在解析的元素的标签.