Java修改图片元数据Exif信息

最近项目里面涉及到了图片的元数据修改,这里把详细的内容给大家分享一下 项目用到了两个Jar包,分别是 mediautil-1.0.jar,metadata-extractor-2.3.1.jar。 重点是mediautil这个jar包,附上它的官方链接:http://mediachest.sourceforge.net/mediautil/,里面有一些它的官方示例,有一点需要注意的是,官网有一个更新补丁,我们需要将补丁包下载解压缩之后放入我们的项目 后续在进行EXIF信息修改的java类中引用刚刚解压好的文件。 下面附上一段完整的修改图片EXif信息代码

图片相关信息修改的对照表附上链接 https://www.awaresystems.be/imaging/tiff/tifftags/baseline.html 不同的exif信息是存放在不同的exif tag里面的,所以修改的方式不一样,具体的所属标签可以去对照表里面查看,下面是一些比较常用的标签获取代码,具体的一些其他标签可以在上面链接里面查找

//获取基本标签
IFD mainIfd = exif.getIFDs()[0];
//获取Exif私有标签
IFD exifOffSetId = mainIfd.getIFD(Exif.EXIFOFFSET);
//获取GPS标签
IFD gpsIfd = mainIfd.getIFD(Exif.GPSINFO);

上面是一些基本的属性,它的Hex分别一一对应Exif.java里面的静态变量 比如相机型号Model:下面是Exif.java对应的变量

/** Identifies the MODEL tag */
 public final static int MODEL = 0x110;

图片里是相机型号在元数据里的对照信息,Type是它对应编码,下面是基本写法

//获取基本标签
 IFD mainIfd = exif.getIFDs()[0];
 //设置编码类型
 Entry e = new Entry(Exif.ASCII);
 //设置值
 e.setValue(0, "leica");
 //给标签内容赋值
 mainIfd.addEntry(Exif.MODEL, e);

具体的图片信息修改可以参考下贴出来的完整代码 ,其他的一些Exif读取,缩略图修改大家可以去看看MediaUtil的官方示例

经验分享 程序员 微信小程序 职场和发展