2016年3月Java读取图片Metadata元数据Exif(maven下载包配置)
转自:2016年3月Java读取图片Metadata元数据Exif
package image;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifIFD0Directory;
/**
* @author zy
* @date 2016年3月22日 上午8:56:09
*/
/**
* maven下载metadata-extractor jar包配置
* <dependency>
<!--读取图片元数据jar包-->
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.6.2</version>
</dependency>
*/
/**
* @author zy
* @date 2016年3月22日 上午8:56:09
* Exif是一种图像文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,
* 包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及GPS全球定位系统数据
*、缩略图等。你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。
*/
/**
* 根据Exif2.1标准,元数据信息包含:
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压缩比。
*/
public class ExifTester {
/**
* @param args
* @throws IOException
* @throws JpegProcessingException
*/
public static void main(String[] args) throws Exception {
File jpegFile = new File("c:\\2.jpg");
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
Directory exif = metadata.getDirectory(ExifIFD0Directory.class);
Collection<Tag> tags = exif.getTags();
Iterator<Tag> iter = tags.iterator();
// 逐个遍历每个Tag
while (iter.hasNext()) {
Tag tag = (Tag) iter.next();
if (tag.getTagName().contains("Unknown")) {
System.out.println("未知标签" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Make")) {
System.out.println("设备制造商" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Model")) {
System.out.println("设备型号" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("X Resolution")) {
System.out.println("X方向分辨率" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("X Resolution")) {
System.out.println("Y方向分辨率" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Resolution Unit")) {
System.out.println("分辨率单位" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Software")) {
System.out.println("软件" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Date/Time")) {
System.out.println("拍摄时间" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("YCbCr Positioning")) {
System.out.println("色相定位" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Orientation")) {
System.out.println("方向" + " = " + tag.getDescription());
}
}
}
}
转自:2016年3月Java读取图片Metadata元数据Exif
package image;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifIFD0Directory;
/**
* @author zy
* @date 2016年3月22日 上午8:56:09
*/
/**
* maven下载metadata-extractor jar包配置
* <dependency>
<!--读取图片元数据jar包-->
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.6.2</version>
</dependency>
*/
/**
* @author zy
* @date 2016年3月22日 上午8:56:09
* Exif是一种图像文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,
* 包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及GPS全球定位系统数据
*、缩略图等。你可以利用任何可以查看JPEG文件的看图软件浏览Exif格式的照片,但并不是所有的图形程序都能处理Exif信息。
*/
/**
* 根据Exif2.1标准,元数据信息包含:
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压缩比。
*/
public class ExifTester {
/**
* @param args
* @throws IOException
* @throws JpegProcessingException
*/
public static void main(String[] args) throws Exception {
File jpegFile = new File("c:\\2.jpg");
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
Directory exif = metadata.getDirectory(ExifIFD0Directory.class);
Collection<Tag> tags = exif.getTags();
Iterator<Tag> iter = tags.iterator();
// 逐个遍历每个Tag
while (iter.hasNext()) {
Tag tag = (Tag) iter.next();
if (tag.getTagName().contains("Unknown")) {
System.out.println("未知标签" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Make")) {
System.out.println("设备制造商" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Model")) {
System.out.println("设备型号" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("X Resolution")) {
System.out.println("X方向分辨率" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("X Resolution")) {
System.out.println("Y方向分辨率" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Resolution Unit")) {
System.out.println("分辨率单位" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Software")) {
System.out.println("软件" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Date/Time")) {
System.out.println("拍摄时间" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("YCbCr Positioning")) {
System.out.println("色相定位" + " = " + tag.getDescription());
}
if (tag.getTagName().contains("Orientation")) {
System.out.println("方向" + " = " + tag.getDescription());
}
}
}
}