> 文档中心 > springboot项目java解析获取图片的详细信息

springboot项目java解析获取图片的详细信息

一、引入依赖

<dependency>    <groupId>com.drewnoakes</groupId>    <artifactId>metadata-extractor</artifactId>    <version>2.16.0</version></dependency>

二、工具类

public class ImageExifDto{private Double lng;private Double lat;private Double alt;private String dateTime;}
import cn.hutool.core.util.Strutil;import com.drew.imaging. ImageMetadataReader; import com.drew.metadata.Directory;import com.drew.metadata.Metadata; import com.drew.metadata.Tag;import com.google.common.collect.Maps;import com.wol.shiju.common.dto.domain.ImageExifDto;import io.swagger.annotations.ApiModel;import java.io.File; import java.util.Map; @ApiModel(value = “解析图片详细信息”) public class ImageExifutil {public static voidi main(String[] args) throws Exception{}public static void showImageInformation(String imageUrl) throws Exception{ String imgDir = "D:\\kiki\\imgs"; File[] files = new File(imageUrl).listFiles(); for (File file : files) {     if (!file.getName().endsWith(".jpg")) {  continue;     }     System.out.println("----------------------------------------\n" + file.getName());     // 获取照片信息     Map exifMap = readPicExifInfo(file);     // 打印照片信息     ImageExifDto imageExifDto = printPicExifInfo(exifMap);     System.out.println(imageExifDto); }    }public static ImageExifDto getImageDto(String imageUrl) throws Exception{File file = new File(imageUrl);if(file.getName().endswith(".jpg")){Map exifMap = readpicExifInfo(file); raturn printpicexifInfo(exifMap);}else{return new ImageExifoto():}}public static Map<String, String> readPicExifInfo(File file) throws Exception{ Map<String, String> map = Maps.newLinkedHashMap<>(); Metadata metadata = ImageMetadataReader.readMetadata(file); for (Directory directory : metadata.getDirectories()) {     for (Tag tag : directory.getTags()) {  // 输出所有属性  System.out.format(   "[%s] - %s = %s\n", directory.getName(), tag.getTagName(), tag.getDescription());  map.put(tag.getTagName(), tag.getDescription());     }     if (directory.hasErrors()) {  for (String error : directory.getErrors()) {      System.err.format("ERROR: %s", error);  }     } } return map;}public static ImageExifDto printPicExifInfo(Map<String,String> map){String[] strings = new string[]{"GPS Version ID","GPS Latitude","GPS Longitude","GPS Altitude", "Date/Time"}String[] names = new string[]{"版本","经度","纬度","高度","UTC时间截","gps日期","拍摄时间"};for(int i = 0;i < strings.length;i++){ if(map.containskey(strings[i])){if ("GPS Latitude".equals(strings[i])){dto.setLat(LatLng2DecimaL(map.get(strings[i]))); }else if("GPS Longitude".endswith(strings[i)){dto.setLng(LatLng2Decimal(map.get(strings[i))));}else if("GPS Altitude".equals(strings(i]){dto.setAlt(Double.valueOf(StrUtil.subBefore(map.get(strings[i]),"metres",true)));}}}}public static double latLng2Decimal(String gps) { String a = gps.split("°")[0].replace(" ", ""); String b = gps.split("°")[1].split("'")[0].replace(" ", ""); String c = gps.split("°")[1].split("'")[1].replace(" ", "").replace("\"", ""); double gps_dou = Double.parseDouble(a) + Double.parseDouble(b) / 60 + Double.parseDouble(c) / 60 / 60; return gps_dou;}}