包的下载地址:
http://www.drewnoakes.com/code/exif/releases/metadata-extractor-2.2.0.jar
package com.imgread;
import com.drew.metadata.*;
import com.drew.metadata.exif.*;
import com.drew.imaging.jpeg.JpegProcessingException;
import java.io.*;
import java.util.Iterator;
public class EXIFReader {
public static void main(String args[]) throws FileNotFoundException {
File f = new File("c://b.jpg");
try {
ExifReader er = new ExifReader(f);
Metadata exif = er.extract();
Iterator itr = exif.getDirectoryIterator();
while (itr.hasNext()) {
Directory directory = (Directory) itr.next();
System.out.println("EXIF版本:" + directory.getString(ExifDirectory.TAG_EXIF_VERSION));
System.out.println("相机品牌:" + directory.getString(ExifDirectory.TAG_MAKE));
System.out.println("相机型号:" + directory.getString(ExifDirectory.TAG_MODEL));
System.out.println("光 圈 值:" + directory.getString(ExifDirectory.TAG_FNUMBER));
System.out.println("快 門:" + directory.getString(ExifDirectory.TAG_EXPOSURE_TIME));
System.out.println("感 光 度:" + directory.getString(ExifDirectory.TAG_ISO_EQUIVALENT));
System.out.println("软 件:" + directory.getString(ExifDirectory.TAG_SOFTWARE));
System.out.println("原始拍摄时间:" + directory.getString(ExifDirectory.TAG_DATETIME_ORIGINAL));
System.out.println("数字化时间:" + directory.getString(ExifDirectory.TAG_DATETIME_DIGITIZED));
System.out.println("方 向:" + directory.getString(ExifDirectory.TAG_ORIENTATION));
System.out.println("图片宽度:" + directory.getString(ExifDirectory.TAG_EXIF_IMAGE_WIDTH));
System.out.println("图片高度:" + directory.getString(ExifDirectory.TAG_EXIF_IMAGE_HEIGHT));
System.out.println("水平分辨率:" + directory.getString(ExifDirectory.TAG_X_RESOLUTION));
System.out.println("垂直分辨率:" + directory.getString(ExifDirectory.TAG_Y_RESOLUTION));
System.out.println("垂直分辨率:" + directory.getString(ExifDirectory.TAG_EXPOSURE_BIAS));
break;
//获得全部metadata
/*Iterator tags = directory.getTagIterator();
while (tags.hasNext()) {
Tag tag = (Tag) tags.next();
System.out.println(tag);
}
if (directory.hasErrors()) {
Iterator errors = directory.getErrors();
while (errors.hasNext()) {
System.out.println("ERROR: " + errors.next());
}
}*/
}
} catch (JpegProcessingException e) {
System.err.println("not jpeg file");
}
}
}
方法说明:
Image Description 图像描述、来源. 指生成图像的工具
Artist作者 有些相机可以输入使用者的名字
Make 生产者 指产品生产厂家
Model 型号 指设备型号
Orientation方向 有的相机支持,有的不支持
XResolution/YResolution X/Y方向分辨率本栏目已有专门条目解释此问题。
ResolutionUnit分辨率单位 一般为PPI
Software软件 显示固件Firmware版本
DateTime日期和时间
YCbCrPositioning 色相定位
ExifOffsetExif信息位置,定义Exif在信息在文件中的写入,有些软件不显示。
ExposureTime 曝光时间 即快门速度
FNumber光圈系数
ExposureProgram曝光程序指程序式自动曝光的设置,各相机不同,可能是Sutter Priority(快门优先)、Aperture Priority(快门优先)等等。
ISO speed ratings感光度
ExifVersionExif版本
DateTimeOriginal创建时间
DateTimeDigitized数字化时间
ComponentsConfiguration图像构造(多指色彩组合方案)
CompressedBitsPerPixel(BPP)压缩时每像素色彩位 指压缩程度
ExposureBiasValue曝光补偿。
MaxApertureValue最大光圈
MeteringMode测光方式, 平均式测光、中央重点测光、点测光等。
Lightsource光源 指白平衡设置
Flash是否使用闪光灯。
FocalLength焦距,一般显示镜头物理焦距,有些软件可以定义一个系数,从而显示相当于35mm相机的焦距 MakerNote(User Comment)作者标记、说明、记录
FlashPixVersionFlashPix版本 (个别机型支持)
ColorSpace色域、色彩空间
ExifImageWidth(Pixel X Dimension)图像宽度 指横向像素数
ExifImageLength(Pixel Y Dimension)图像高度 指纵向像素数
Interoperability IFD通用性扩展项定义指针和TIFF文件相关,具体含义不详
FileSource源文件 Compression压缩比。
分享到:
相关推荐
在Java编程中,读取照片信息,特别是Exif(Exchangeable Image File Format)元数据,是一种常见的需求。Exif信息通常包含拍摄日期、时间、地理位置、相机型号、曝光参数等重要数据,对于图像处理和分析非常有用。在...
2. 读取EXIF数据:使用`Imaging`类的`getMetadata`方法读取图像的元数据: ```java File imageFile = new File("path_to_your_image.jpg"); ImageMetadata metadata = Imaging.getMetadata(imageFile); ``` 3. ...
总之,通过使用Apache Commons Imaging库,Java开发者可以方便地读取和处理图像文件的EXIF数据,从而实现各种功能,如照片的元数据分析、图片管理、信息提取等。了解并熟练掌握这一技术对于从事与图像处理相关的IT...
使用`MetadataExtractor`,你可以轻松地读取图片文件中的EXIF元数据。以下是一个简单的示例代码,演示如何读取并打印所有EXIF标签: ```java import com.drewnoakes.metadata.exif.ExifIFD0Directory; import ...
Java的`javax.imageio.ImageIO`类提供读取和写入图像元数据的功能。通过`ImageReader`和`ImageWriter`接口,可以访问和修改图像的元数据,包括相机设置、GPS位置等。 3. **XML和JSON元数据** 在处理XML或JSON文件...
总结来说,要从Java程序中获取相片的EXIF信息并进行自动缩放,可以使用`metadata-extractor`库读取元数据,结合`BufferedImage`和`Graphics2D`实现图像的缩放操作。这两个步骤可以集成到一个完整的图像处理流程中,...
以下是对Java读取图片EXIF信息的详细分析: 1. **EXIF信息概述**: - EXIF是专门为数码相机照片设计的一种元数据格式,用于存储拍摄时的相机设置和环境信息。 - 主要信息包括:相机品牌和型号、拍摄时间、光圈...
在Java编程中,获取图像的EXIF(Exchangeable Image File Format)信息是一项常见的任务,它可以帮助我们了解照片的拍摄时间、地理位置、相机型号等元数据。这篇博客文章“JAVA获取图片EXIF等综合信息并转化为JSON”...
3. 读取Exif数据:调用库提供的函数或方法,读取指定的Exif标签,如"DateTimeOriginal"、"Make"、"Model"等。 4. 处理数据:将读取到的信息解析成可读格式,如日期字符串、设备名称等。 5. 显示或保存:根据需求,将...
在Android平台上,开发人员经常需要处理图像数据,其中包括读取图片的Exif信息。Exif(Exchangeable Image File Format)是一种扩展的JPEG格式,用于存储与图像相关的信息,如拍摄日期、时间、地理位置、相机型号、...
理解并获取Exif信息对于摄影爱好者、图像处理软件开发者以及数据分析人员来说都具有重要的价值。 首先,Exif信息主要由相机硬件在拍摄时自动记录。当按下快门时,相机内部传感器捕获图像,并同时记录下与拍摄条件...
2. 修改Exif信息:用户可以使用这个库来设置新的Exif数据,比如更改图片的拍摄日期或添加地理位置信息。 3. 写回Exif信息:修改后的元数据会保存回图像文件,确保信息的更新。 在实际应用中,使用`mediautil`源码的...
例如,通过`ImageIO.read(file)`加载图片后,我们可以调用`IIOMetadata`的`getNativeMetadataFormatNames()`方法获取Exif格式的元数据,然后解析其中的GPS信息。 核心知识点二:解析Exif信息 Java的`...
在数字图像处理领域,EXIF(Exchangeable Image File Format)是一种标准格式,用于存储图像文件中的元数据,包括拍摄时间、相机型号、光圈值、快门速度等。对于需要对这些元数据进行读取或修改的应用来说,...
在某些情况下,如果图像的EXIF数据不可用,或者使用了XMP作为元数据存储的地方,这个库就派上用场了。 使用XMP Core库,你可以解析XMP数据并访问其中的图像尺寸信息。然而,通常情况下,对于基本的图像分辨率读取...
总的来说,这个Java项目提供了一个全面的示例,教导开发者如何深入挖掘和利用数字照片中的元数据,对于学习Java图像处理和理解EXIF信息具有很高的实践价值。通过学习和实践这个项目,开发者将能够熟练地在自己的应用...
综上所述,Java结合Apache Commons Imaging库可以实现对图片的EXIF信息读取和保存,通过调整JPEG压缩质量实现图片压缩,并利用Java 2D API轻松添加边框。这些技术在实际项目中非常实用,帮助开发者处理和优化图片...
EXIF数据包含了拍摄照片时的各种参数,如拍摄时间、相机型号、曝光设置、地理位置等。为了在Java中读取这些信息,我们可以利用特定的库,如metadata-extractor和XMP库。 1. **metadata-extractor-2.6.2.jar**: ...
在Java中,我们可以使用metadata-extractor库来读取数码相机的Exif数据信息。metadata-extractor是一个开源的Java库,它能从各种图像和视频文件中提取元数据,包括Exif、IPTC、XMP等信息。这个库非常实用,可以帮助...