通过 Java 技术手段,获取女朋友定位地址...

今早,看到CSDN里推荐的Python获取女朋友发来加班拍照定位地址是酒店的段子,本来准备验证下,顺便练练手的,最后,安装执行pip install json报没有指定版本号 。
一怒之下搞我大JAVA,验证可行与场景体遐想 。废话不多说,先上硬货 。
依赖导入从博文上看是exifread模块,找我大java的对应的jar,发现metadata-extractor,而且官方还在持续更新,最近的jar是今年的 。

通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
这个元数据提取jar非常强大,还支持视频信息的提取,看看官方介绍:
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
看到没,第一个示例,就写的支持我大JAVA,让我犹如鸡血冲顶,在支持同事联调事件工单的同时,大肝这块 。
<dependency><groupId>com.drewnoakes</groupId><artifactId>metadata-extractor</artifactId><version>2.16.0</version></dependency>复制代码准备工作1、室外空旷地点打开GPS
2、百度地图、北斗伴验证已连接到GPS定位
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
3、设置手机带的照相机开启位置信息
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
4、拍照一张顺便查看照片详情
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
这里一定要确定拍的照片的详情时有经纬度信息的,如果没有,你针对你的手机在CSDN里搜索下怎么设置 。这里顺便提下,CSDN的浏览器插件真香 。简直就是我们技术人事的福音,再以不用担心某某度的广告之类导致找东西费劲了,而且它很包容,还时可以选择自己喜欢的搜索引擎的 。
通过 Java 技术手段,获取女朋友定位地址...

文章插图
 
图片
示例demo这里先演示这个元数据提取jar能提取到的信息,顺便把取到的经纬度通过百度转地址 。
因为是demo,没有业务,我这里就直接在测试类里干了 。没有什么业务,不涉及什么机密,可以上全码 。
package com.easylinkin.bm.extractor;import com.alibaba.fastjson.JSONObject;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 com.easylinkin.bm.util.HttpUtils;import lombok.extern.slf4j.Slf4j;import java.io.File;import java.io.IOException;/** * @author zhengwen **/@Slf4jpublic class ImgTestCode {public static void main(String[] args) throws Exception {File file = new File("C:UserszhengwenDesktoptestIMG_20210820_093958.jpg");readImageInfo(file);}/*** 提取照片里面的信息** @param file 照片文件* @throws ImageProcessingException* @throws Exception*/private static void readImageInfo(File file) throws ImageProcessingException, Exception {Metadata metadata = https://www.isolves.com/it/cxkf/yy/JAVA/2022-07-12/ImageMetadataReader.readMetadata(file);System.out.println("---打印全部详情---");for (Directory directory : metadata.getDirectories()) {for (Tag tag : directory.getTags()) {System.out.format("[%s] - %s = %sn",directory.getName(), tag.getTagName(), tag.getDescription());}if (directory.hasErrors()) {for (String error : directory.getErrors()) {System.err.format("ERROR: %s", error);}}}System.out.println("--打印常用信息---");Double lat = null;Double lng = null;for (Directory directory : metadata.getDirectories()) {for (Tag tag : directory.getTags()) {String tagName = tag.getTagName();//标签名String desc = tag.getDescription(); //标签信息if (tagName.equals("Image Height")) {System.err.println("图片高度: " + desc);} else if (tagName.equals("Image Width")) {System.err.println("图片宽度: " + desc);} else if (tagName.equals("Date/Time Original")) {System.err.println("拍摄时间: " + desc);} else if (tagName.equals("GPS Latitude")) {System.err.println("纬度 : " + desc);System.err.println("纬度(度分秒格式) : " + pointToLatlong(desc));lat = latLng2Decimal(desc);} else if (tagName.equals("GPS Longitude")) {System.err.println("经度: " + desc);System.err.println("经度(度分秒格式): " + pointToLatlong(desc));lng = latLng2Decimal(desc);}}}System.err.println("--经纬度转地址--");//经纬度转地主使用百度apiconvertGpsToLoaction(lat, lng);}/*** 经纬度格式转换为度分秒格式 ,如果需要的话可以调用该方法进行转换** @param point 坐标点* @return*/public static String pointToLatlong(String point) {Double du = Double.parseDouble(point.substring(0, point.indexOf("?)).trim());Double fen = Double.parseDouble(point.substring(point.indexOf("?) + 1, point.indexOf("'")).trim());Double miao = Double.parseDouble(point.substring(point.indexOf("'") + 1, point.indexOf(""")).trim());Double duStr = du + fen / 60 + miao / 60 / 60;return duStr.toString();}/**** 经纬度坐标格式转换(* 白???聘袷剑? @param gps*/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;}/*** api_key:注册的百度api的key* coords:经纬度坐标* http://api.map.baidu.com/reverse_geocoding/v3/?ak="+api_key+"&output=json&coordtype=wgs84ll&location="+coords*


推荐阅读