Java读取图片Metadata元数据Exif

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()); 
   } 
  } 
 } 
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值