Java获取图像Exif信息
来源:互联网 发布:mac论坛哪个好 编辑:程序博客网 时间:2024/05/17 03:31
Exif(Exchangeable Image File)是可交换图像文件的缩写,是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。在Windows 系统中,对图像文件右键选择“属性”,在“详细信息”选项卡中可以查看Exif值,但这些值并不全面,想要查看完整的Exif信息,需要下载专业的Exif信息查看器。
用Java实现一个Exif查看器,需要借助开源项目metadata-extractor,你可以在https://drewnoakes.com/code/exif/中查看该项目的详细信息。
导入jar包
项目需要两个jar包:
metadata-extractor-2.8.1.jar,
xmpcore-5.1.2.jar
你可以在https://github.com/drewnoakes/metadata-extractor/releases下载这两个jar包。
通常情况下,使用
Metadata metadata = ImageMetadataReader.readMetadata(file);
如果知道确切的图像格式,如JPEG、BMP等,就可以使用JpegMetadataReader或BmpMetadataReader来获得Metadata对象,如:
Metadata metadata = JpegMetadataReader.readMetadata(file);
Iterable<JpegSegmentMetadataReader> readers = Arrays.asList(new ExifReader(), new IptcReader());Metadata metadata = JpegMetadataReader.readMetadata(file, readers);
import com.drew.imaging.ImageMetadataReader;import com.drew.metadata.Directory;import com.drew.metadata.Metadata;import com.drew.metadata.Tag;import java.io.File;public class SampleUsage{public static void main(String[] args){File file = new File("N:/ls.jpg");try{Metadata metadata = ImageMetadataReader.readMetadata(file);print(metadata);}catch (Exception e){e.printStackTrace();}}private static void print(Metadata metadata){for (Directory directory : metadata.getDirectories()){for (Tag tag : directory.getTags()){System.out.print(tag.getTagName() + " --> ");System.out.println(tag.getDescription());}if (directory.hasErrors()){for (String error : directory.getErrors()){System.err.println("ERROR: " + error);}}}}}
输出结果如下(部分):
Make --> CanonModel --> Canon EOS 700DOrientation --> Top, left side (Horizontal / normal)X Resolution --> 72 dots per inchY Resolution --> 72 dots per inchResolution Unit --> InchSoftware --> Adobe Photoshop CS6 (Windows)Date/Time --> 2015:05:18 16:01:01Artist --> SonglinYCbCr Positioning --> Datum point
前面是参数的名称,后面是参数的值,如Make参数(厂商),对应的值是Canon(佳能)。常见的Exif参数如下表:
代码
英文解释
中文解释
0x0000
GPS Version ID
GPS版本
0x010f
Make
厂商
0x0110
Model
机型
0x0112
Orientation
方向
0x0131
Software
软件
0x0132
Date/Time
修改时间
0x013b
Artist
作者
0x0213
YCbCr Positioning
YcbCr定位
0x829a
Exposure Time
曝光时间
0x829d
F-Number
光圈
0x8822
Exposure Program
曝光程序
0x8827
ISO Speed Ratings
ISO感光度
0x9000
Exif Version
Exif版本
0x9003
Date/Time Original
拍摄时间
0x9004
Date/Time Digitized
数字化时间
0x9101
Components Configuration
成分构成
0x9201
Shutter Speed Value
快门速度
0x9202
Aperture Value
光圈值
0x9204
Exposure Bias Value
曝光补偿
0x9205
Max Aperture Value
最大光圈
0x9207
Metering Mode
测光模式
0x9209
Flash
闪光
0x920a
Focal Length
焦距
0x9286
User Comment
用户注释
0x9290
Sub-Sec Time
次秒(修改时间)
0x9291
Sub-Sec Time Original
次秒(拍摄时间)
0x9292
Sub-Sec Time Digitized
次秒(数字化时间)
0xa000
FlashPix Version
FlashPix版本
0xa001
Color Space
色彩空间
0xa002
Exif Image Width
Exif图像宽度
0xa003
Exif Image Height
Exif图像高度
0xa20e
Focal Plane X Resolution
焦平面水平分辨率
0xa20f
Focal Plane Y Resolution
焦平面垂直分辨率
0xa210
Focal Plane Resolution Unit
焦平分辨率单位
0xa401
Custom Rendered
自定义补偿
0xa402
Exposure Mode
曝光模式
0xa403
White Balance Mode
白平衡
0xa406
Scene Capture Type
场景拍摄类型
0x0001
Interoperability Index
可交换标准
0x0002
Interoperability Version
可交换版本
0x0103
Thumbnail Compression
压缩模式
0x0201
Thumbnail Offset
JPEG缩略图起始位置
0x0202
Thumbnail Length
JPEG缩略图数据长度
0x011a
X Resolution
水平分辨率
0x011b
Y Resolution
垂直分辨率
0x0128
Resolution Unit
分辨率单位
0x0131
Software
软件
0x0006
Lens Information
镜头信息
0x0007
Lens
镜头
- Java获取图像Exif信息
- Java获取照片EXIF信息
- Java获取照片EXIF信息
- Java获取照片EXIF信息
- Java获取照片EXIF信息
- Java获取照片EXIF信息
- JAVA获取JPEG文件Exif相关信息
- Android获取Exif信息
- 获取照片Exif信息
- java获取文件exif信息-添加图片文字水印
- 获取照片的Exif信息
- 获取图片的exif信息
- PHP 获取图片信息exif
- ios获取图片exif信息
- iOS获取照片EXif信息
- ios获取图片exif信息
- JPEG图像EXIF数据信息的解析
- Java读取图片EXIF信息
- postgresql 初始
- Snackbar使用及其注意事项
- 关于scanf 函数,你很少了解的“秘密”
- poj 3691 DNA repair(AC自动机+dp)
- SDUT 1197----约瑟夫问题
- Java获取图像Exif信息
- 6.原型模式
- 数据存储操作(1)-------- SharedPreference存储
- C# 里面的 #region 含义
- shell学习第四天----华丽的printf输出
- 空指针异常的原因
- JSP介绍
- 多路数组聚集(Multiway)
- 神奇的android:clipChildren属性