当前位置:   article > 正文

Java 解析图片信息 实现GPS定位_java的gps信息图片识别

java的gps信息图片识别

最近工作中遇到处理图片的一些场景,主要是批量提取图片中一些图像宽高、分辨率以及物理焦距等信息。然后在使用过程中也是看到图片中包含了很多其他有用的信息,本文就和大家一起分享这个小技巧吧。

  1. <dependency>
  2. <groupId>com.drewnoakes</groupId>
  3. <artifactId>metadata-extractor</artifactId>
  4. <version>2.16.0</version>
  5. </dependency>
  1. //分析图片获取地址
  2. public static Map<String,String> PicAnalysis(String path) throws JpegProcessingException, IOException {
  3. Map<String,String> map = new HashMap();
  4. System.out.println("强大的语言正在识别图片地址...");
  5. File picFile = new File(path);
  6. Metadata metadata = JpegMetadataReader.readMetadata(picFile);
  7. Iterator<Directory> it = metadata.getDirectories().iterator();
  8. while (it.hasNext()) {
  9. Directory exif = it.next();
  10. Iterator<Tag> tags = exif.getTags().iterator();
  11. while (tags.hasNext()) {
  12. Tag tag = tags.next();
  13. map.put(tag.getTagName(),tag.getDescription());
  14. System.out.println(tag.getTagName() + ":" +tag.getDescription());
  15. }
  16. }
  17. System.out.println("图片分析完毕!");
  18. return map;
  19. }

该方法会返回如下信息,相当多,这里整理成表格:

从图片中拿出的信息为度分秒格式:即30° 14' 32.52",我们需要将其转换为经纬度:如121.485559,31.240778,代码如下:

  1. public static String translate(String Gps) {
  2. String a = Gps.split("°")[0].replace(" ", "");
  3. String b = Gps.split("°")[1].split("'")[0].replace(" ", "");
  4. String c = Gps.split("°")[1].split("'")[1].replace(" ", "").replace("\"", "");
  5. double gps = Double.parseDouble(a)+Double.parseDouble(b)/60 + Double.parseDouble(c)/60/60;
  6. return String.valueOf(gps);
  7. }

获取到具体坐标后,这距离成功只有半步之遥,接下来调用高德地图的Api来获取具体地址。

  1. public static void getAddress( Map<String,String> param){
  2. String str = RequestUtils.sendGet("https://restapi.amap.com/v3/geocode/regeo", "key=5a3c45fd68d04bbc&location="+translate(param.get("GPS Longitude"))+","+translate(param.get("GPS Latitude")));
  3. JSONObject result = JSON.parseObject(str);
  4. System.out.println("拍摄时间:" +param.get("Date/Time"));
  5. System.out.println("拍摄地点:" +result.getJSONObject("regeocode").getString("formatted_address"));
  6. System.out.println("手机型号:" +param.get("Make") +" " + param.get("Model"));
  7. System.out.println(str);
  8. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/920635
推荐阅读
相关标签
  

闽ICP备14008679号