「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!」
大家好,我是Lex 喜欢欺负超人那个Lex
上次,我们用Python读取照片的GPS信息,可以获取拍摄时间、手机型号等信息,还可以对
拍摄地点进行精确定位。Java表示不服
~今日重点:用Java读取照片的拍摄时间、GPS定位 以及手机型号等等信息
带你一步步实现功能,文末有完整源码哦【建议收藏】
事情是这样的
上次用python对照片进行GPS定位破案,如下 ↓ ↓ ↓
女友半夜加班发自拍 python男友用30行代码发现惊天秘密
今天决定,露出我的真面目
用世界上最好的语言—Java(可能会挨喷)
来实现一遍这个功能
)
功能大体介绍一下就是:
通过脚本分析照片,对照片的拍摄地点进行GPS定位
另外,还可以拿到拍摄时间、手机型号等等信息。
)
先上效果
从微信某个群里随便找了一位美女发的照片
)
Java对照片进行分析,效果如下
)
获得结果如下:
1 | css复制代码{海拔=0 metres, 手机=Xiaomi, 纬度=24.41046111111111, 型号=MI MAX, 经度=103.41424722222223, 拍摄时间=2018:12:01 16:37:32, |
emmm,不好过多描述
Java实现方法
1、引入相关jar包
这里需要引入两个jar包,用于读取照片的exif信息,里面包含照片的完整信息。
资源下载,放在最后啦。
)
2、读取Exif原始信息
首先利用jar包工具,
将照片里的Exif原始信息读取出来。
完整代码如下:
1 | ini复制代码public static HashMap<String, Object> readPicInfo(String file_path) { |
我们来看一下,能获得那些信息:
拍摄的手机型号、GPS精确位置、拍摄时间、像素、修改日期
甚至包括,拍摄地点的海拔信息都是有的。
)
)
3、GPS格式转换
我们通过exif读取的GPS信息,是类似于度、分、秒这种格式的。
我们需要将GPS信息通过计算转换成十进制的数字位数,
这样才可以调用百度地图API或者其他的地图API来将GPS信息转换为地理位置信息。
1 | ini复制代码/*** |
通过这个函数,我们将经纬度信息转换为10进制数字信息。
)
4、调用地图API将GPS坐标转换为地理位置
我们通过exif原始信息,拿到的是一串地理坐标数字。
如果想要转换为具体的地址信息,那么就需要通过各大地图API来进行转换,
小伙伴们可以自己去免费注册一个百度地图API,然后通过调用它提供的接口,
就可以将传入的GPS坐标值,转换为地址信息。当然,这里也可以用我的。
调用接口方法如下:
1 | ruby复制代码//接口调用方法如下: |
5、完整代码
最后,将代码整理汇总一下。
做成了一个简单的java小项目
有java环境,即可运行~~
深藏功与名~~
)
本文转载自: 掘金