java获取照片相关属性
- 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获取照片相关属性的更多相关文章
- Java 获取对象全部属性 包括 父类属性
今天由于业务需要,看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanU ...
- JAVA获取系统相关信息
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003596 获取JRE系统相关参数 java 通过S ...
- Java获取系统相关信息System.getProperty()
java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目 ...
- Java 获取操作系统相关的内容
package com.hikvision.discsetup.util; import java.lang.reflect.Field; import java.net.InetAddress; i ...
- System.getProperty()获取系统的相关属性
我们在编程的过程中有时候需要获取系统的相关属性,今天就让我们一起来学习学习如何获取系统的相关属性 至于System.getProperty(param)中的各个参数的概念请看下表. java.vers ...
- Java获取环境变量和系统属性
Java获取服务器环境变量和JVM系统变量 当程序中需要使用与操作系统相关的变量(例如:文件分隔符.换行符)时,Java提供了System类的静态方法getenv()和getProperty() ...
- 随手记一次用C#正则表达式获取下拉菜单html标签<select>以及相关属性值
随手记一次用C#正则表达式获取下拉菜单html标签<select>以及相关属性值 1:有如下html: .................. <select id="aaa ...
- java利用反射获取类的属性及类型
java利用反射获取类的属性及类型. import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.Map ...
- java程序启动 环境属性的获取
System.getProperties().list(System.out); 如果要获取某一个属性,例如常见的“操作系统” 则 System.getProperty("os.name& ...
随机推荐
- ASP.NET缓存OutputCache和Response.Cache之C#后台设置
一.ASPX页面缓存页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ OutputCache Duration="60" VaryByParam=&qu ...
- EF 更新指定的字段
假如你有个表,有30个字段,你只想更新其中的1到2个字段的话,就可以用得上这篇文章 作用:类似于我们以前的sql代码 update xxx表 set name='ok',pwd='ok' where ...
- hdu 4607 Park Visit(树上最长链)
求树上最长链:两遍搜索. 第一次从树上任意点开始,最远点必然是某一条最长链上的端点u. 第二次从u开始,最远点即该最长链的另一端点. 先在最长链上走,不足再去走支链. 把询问数m错打成n,狠狠wa了一 ...
- I.MX6 默认打开 USB adb
/***************************************************************************** * I.MX6 默认打开 USB adb ...
- Java Socket(1): 入门
前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那 ...
- Oracle RAC OCR 的备份与恢复
Oracle Clusterware把整个集群的配置信息放在共享存储上,这些信息包括了集群节点的列表.集群数据库实例到节点的映射以及CRS应用程序资源信息.也即是存放在ocr 磁盘(或者ocfs文件) ...
- 云计算服务模型,第 3 部分: 软件即服务(PaaS)
英文原文:Cloud computing service models, Part 3: Software as a Service 软件即服务 (SaaS) 为商用软件提供基于网络的访问.您有可能已 ...
- java web 学习十五(jsp基础语法)
任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用. 一.JSP模版元素 JSP页面中的HTML内容称之 ...
- 为什么你写的Python运行的那么慢呢?
大约在一年前,也就是2013年在Waza(地名),Alex Gaynor提到了一个很好的话题:为什么用Python.Ruby和Javascript写的程序总是运行的很慢呢?正如他强调的,关键就是现在出 ...
- 在WinForm编程中犯的一些错误
1.一直以为,MouseClick事件在鼠标点击时发生,MouseDoubleClick事件在鼠标双击时发生.那么在单击鼠标时会调用MouseClick事件处理程序,双击鼠标时会调用MouseDoub ...