读取图片信息(exif),使用com.drew.metadata.Metadata

本文介绍了如何使用metadata-extractor Java库读取图像的EXIF信息,包括示例代码,展示了如何获取并打印EXIF中的光圈、曝光时间、ISO速度等详细信息,以及如何处理图片的旋转和镜像操作。
摘要由CSDN通过智能技术生成

---恢复内容开始---

最近在开发中用到了metadata-extractor-xxx.jar 和 xmpcore-xxx.jar这个玩意, 索性查阅大量文章了解学习,来分享分享。本身工作也是经常和处理大图片打交道,摸索摸索也是多多益善。

 

首先介绍一下什么是EXIF,EXIF是 Exchangeable Image File 的缩写,这是一种专门为数码相机照片设定的格式。这种格式可以用来记录数字照片的属性信息,如相机的品牌及型号、相片的拍摄时间、拍摄时所设置的光圈大小、快门速度、ISO等信息。除此之外它还能够记录拍摄数据,以及图片格式化方式,这样就可以输出到兼容EXIF格式的外设上,如照片打印机等。

目前最常见的支持EXIF信息的图片格式是JPG,很多的图像工具都可以直接显示图片的EXIF信息,包括现在的一些著名的相册网站也提供页面用于显示照片的EXIF信息。本文介绍Java如何读取图像的EXIF信息,包括如何根据EXIF信息对图像进行调整以便适合用户浏览。

用BufferedImage类来读的时候,过大的图片时常会抛出OutOfMemoryException异常,挺蛋疼的。

 

[java]  view plain copy print ?
 
  1. BufferedImage image = ImageIO.read(File file);  

目前最简单易用的EXIF信息处理的Java包是 Drew Noakes 写的 metadata-extractor。这是一个能够从图像文件中读取元数据(Exif, IPTC, XMP, ICC等)的简单的Java库,使用简单:

 

[java]  view plain copy print ?
 
  1. Metadata metadata = ImageMetadataReader.readMetadata(imagePath);  

 

该库能了解多种格式的元数据,其中许多可以存在于单个图像:
Exif、IPTC、XMP、JFIF / JFXX、ICC Profiles、Photoshop fields、PNG properties、BMP properties、GIF properties

它能处理类型的文件:JPEG、TIFF、PSD、PNG、BMP、GIF、Camera Raw (NEF/CR2/ORF/ARW/RW2/...)

注:并不是每个JPG图像文件都包含有EXIF信息,你可以在Windows资源管理器单击选中图片后,如果该图片包含EXIF信息,则在窗口状态栏会显示出相机的型号。

二、示例代码及描述

下面我们给出一些代码将含有EXIF的图片信息全部打印出来。

示例1):

[java]  view plain copy print ?
 
  1. import java.io.File;  
  2.     import java.util.Iterator;  
  3.        
  4.     import com.drew.imaging.jpeg.JpegMetadataReader;  
  5.     import com.drew.metadata.Directory;  
  6.     import com.drew.metadata.Metadata;  
  7.     import com.drew.metadata.Tag;  
  8.     import com.drew.metadata.exif.ExifDirectory;  
  9.        
  10.     /** 
  11.    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值