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
时间: 2024-10-06 05:06:43

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

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

今天由于业务需要,看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanUtils相关的方法来进行转化(要求两个类的属性名称相同),当然这个方法只支持基本数据类型,如Long,Integer,String,Short之类的转化,但是像Date类型就需要自己手动判断来转,这就出现了今天所遇到的坑 先看下反射机制是如何获取类的方法的: Class clazz = object

java注解使用、java获取注解的属性、获取注解的字段值

一.前言 1.前面一直讲注解的基础知识,注解的定义,对于注解的使用几乎是一笔略过,本篇将着重讲讲注解的使用. 获取注解的属性,通过反射获取注解的属性值. 二.示例代码 1.定义一个注解,用于给 全局变量 field 字段 赋值 package com.haha.study.annotation.value;import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.

Android开发之获取屏幕相关属性

几乎每个app都会用到屏幕相关的属性,所以我在这将常用的属性封装成了工具类 首先新建一个工具类(ScreenUtils) 1.获取屏幕宽高: public static DisplayMetrics getScreenSize(Context context){ DisplayMetrics metrics = new DisplayMetrics(); WindowManager wm = (WindowManager)context .getSystemService(Context.WIN

JS获取照片拍摄的角度属性,用于旋转控制

在微信里ios手机上传竖拍照片会自动旋转90度,与拍摄时的角度不同,所以需要处理: 1.使用EXIF.js可以获取到照片的拍摄属性: API 方法 名称 说明 EXIF.getData(img, callback) 获取图像的数据 能兼容尚未支持提供 EXIF 数据的浏览器获取到元数据. EXIF.getTag(img, tag) 获取图像的某个数据 EXIF.getAllTags(img) 获取图像的全部数据,值以对象的方式返回 EXIF.pretty(img) 获取图像的全部数据,值以字符串

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

我们在编程的过程中有时候需要获取系统的相关属性,今天就让我们一起来学习学习如何获取系统的相关属性 至于System.getProperty(param)中的各个参数的概念请看下表. java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.specification.version Java 虚拟机规范版本 java.vm.specif

【java】java反射机制,动态获取对象的属性和对应的参数值,并属性按照字典序排序,Field.setAccessible()方法的说明【可用于微信支付 签名生成】

方法1:通过get()方法获取属性值 package com.sxd.test.controller; public class FirstCa{ private Integer num; private String name; private Boolean flag; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String getNam

java反射获取对象的属性值和对象属性中的子属性值

近段时间在做web项目,前端使用的是jQuery EasyUI. 为方便需要,准备做一个前端通用的Datagird导出Excel功能,博主也考虑过思路和最终功能,1.前端选中行导出:2.当前页导出:3.当前过滤条件导出. 想偷懒在网上找找已有的代码改改,发现大部分只能满足个别需求,使用JS导出只能满足前端,使用代码才能实现3功能. ...... 好了,说了一堆废话,回归正题,本文是在做通用自定义字段导出时所需要,根据属性名去查找对象和子对象,找到对应属性值,抓取回来放到Excel中. 直接上代码

java获取对象属性类型、属性名称、属性值

因为项目需要用到,于是简单封装了一些常用的操作: [java] view plaincopy /** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + field

java读取照片信息 获取照片拍摄时的经纬度

项目结构 源码:ImageInfo.zip 第一步:添加需要的架包metadate-extractor.jar 架包下载地址:https://code.google.com/p/metadata-extractor/downloads/list 或者去Maven仓库下载 http://search.maven.org/#search%7Cga%7C1%7Cmetadata-extractor 第二步:编写解析代码 1 package com.drew.metadata; 2 import jav