我们需要添加一个依赖
<!-- https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor -->
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.7.2</version>
</dependency>
然后我们可以利用依赖实现exif的读取。
package com.shengxi.wangyang.common.util;
import com.drew.imaging.ImageMetadataReader;
import com.drew.imaging.ImageProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
/**
* @author matthew
* 实现文件exif属性操作工具类
* @version 1.0.0
* @date 2020-02-17 21:46:30
*/
public class ExifUitl {
public static String[] readExif(File file) throws ImageProcessingException, IOException {
String[] array = new String[3];
//如果你对图片的格式有限制,可以直接使用对应格式的Reader如:JPEGImageReader
ImageMetadataReader.readMetadata(file)
.getDirectories().forEach(v ->
v.getTags().forEach(t -> {
System.out.println(t.getTagName() + " : " + t.getDescription());
switch (t.getTagName()) {
// 经度
case "GPS Longitude":
array[0] = t.getDescription();
break;
// 纬度
case "GPS Latitude":
array[1] = t.getDescription();
break;
// 拍摄时间
case "Date/Time Original":
array[2] = t.getDescription();
default:
break;
}
})
);
return array;
}
}
如果想获取其他的exif参数,可以利用直接打印exif读取出来的tag还有对应的description查看。这里需要注意:他的本质是一个map。所以如果你对应的参数如果没有,打印是不会有对应的tag的。