需要jar包metadata-extractor
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.HashMap;
import java.util.Map;
/*
@author Nian
@Date 2022/8/9 22:25
@purpose from a image get it information of exif
@Note use jar:metadata-extractor-2.12.0.jar
*/
public class GetImgExifInfo {
public static void main(String[] args) {
try {
Map<String, String> info = getInfo("D:" + File.separator + "test.jpg");
printImgInfo(info);
} catch (ImageProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static Map<String, String> getInfo(String path) throws ImageProcessingException, IOException {
HashMap<String, String> hashMap = new HashMap<>();
File file = new File(path);
Metadata metadata = ImageMetadataReader.readMetadata(file);
for (Directory directory : metadata.getDirectories()) {
System.out.println(directory.getName());
for (Tag tag : directory.getTags()) {
// System.out.println("directory.getName() = " + directory.getName());
// System.out.println("tag.getTagName() = " + tag.getTagName());
// System.out.println("tag.getTagType() = " + tag.getTagType());
// System.out.println("tag.getDescription() = " + tag.getDescription());
// System.out.println("tag.getTagTypeHex() = " + tag.getTagTypeHex());
// System.out.println("tag.getDirectoryName() = " + tag.getDirectoryName());
// System.out.format("%s - %s : %s\n", directory.getName(),tag.getTagName(),tag.getDescription());
hashMap.put(tag.getTagName(), tag.getDescription());
}
if (directory.hasErrors()) {
System.out.println(directory.getErrors());
}
}
return hashMap;
}
public static void printImgInfo(Map<String, String> map) {
String[] strings = new String[]{"Compression", "Image Width", "Image Height", "Make", "Model", "Software",
"GPS Version ID", "GPS Latitude", "GPS Longitude", "GPS Altitude", "GPS Time-Stamp", "GPS Date Stamp",
"ISO Speed Ratings", "Exposure Time", "Exposure Mode", "F-Number", "Focal Length 35", "Color Space", "File Source", "Scene Type"};
String[] names = new String[]{"压缩格式", "图像宽度", "图像高度", "拍摄手机", "型号", "手机系统版本号",
"gps版本", "经度", "纬度", "高度", "UTC时间戳", "gps日期",
"iso速率", "曝光时间", "曝光模式", "光圈值", "焦距", "图像色彩空间", "文件源", "场景类型"};
for (int i = 0; i < strings.length; i++) {
if (map.containsKey(strings[i])) {
System.out.println(names[i] + " " + strings[i] + " : " + map.get(strings[i]));
}
}
}
}