大家好,又见面了,我是你们的朋友全栈君。
大家好,我是Lex 喜欢欺负超人那个Lex
上次,我们用Python读取照片的GPS信息,可以获取拍摄时间、手机型号等信息,还可以对
拍摄地点进行精确定位。Java表示不服~~~
今日重点:用Java读取照片的拍摄时间、GPS 以及手机型号等等信息
带你一步步实现功能,文末有完整源码哦【建议收藏】
事情是这样的
上次用python对照片进行GPS读取,如下 ↓ ↓ ↓
女友半夜加班发自拍 python男友用30行代码发现惊天秘密
【当然是选择原谅她啊】Python破解”通宵加班”女友的秘密
今天决定,露出我的真面目
用世界上最好的语言—Java(可能会挨喷)
来实现一遍这个功能
功能大体介绍一下就是:
通过脚本分析照片,对照片的拍摄地点进行GPS读取
另外,还可以拿到拍摄时间、手机型号等等信息。
先上效果
从微信某个群里随便找了一位美女发的照片
Java对照片进行分析,效果如下
获得结果如下:
{海拔=0 metres, 手机=Xiaomi, 纬度=24.41046111111111, 型号=MI MAX, 经度=103.41424722222223, 拍摄时间=2018:12:01 16:37:32,
拍摄地点=中国 云南省 红河哈尼族彝族自治州 xx市 XXX路 XXX号 温泉XXXX}
经纬度:24.41046111111111,103.41424722222223
拍摄时间:2018:12:01 16:37:32
手机型号:Xiaomi MI MAX
拍摄地点:中国 云南省 红河哈尼族彝族自治州 弥勒市 XXX路 XXX号 温泉XXX酒店
{"status":0,"result":{"location":{"lng":103.42283328917563,"lat":24.413805252378915},
"formatted_address":"云南省红河哈尼族彝族自治州弥勒市XXX路","business":"","addressComponent":
{"country":"中国","country_code":0,"country_code_iso":"CHN","country_code_iso2":"CN",
"province":"云南省","city":"红河哈尼族彝族自治州","city_level":2,"district":"弥勒市","town":"","town_code":"","adcode":"532504","street":"温泉路","street_number":"","direction":"","distance":""},"cityCode":107}}
emmm,不好过多描述
Java实现方法
1、引入相关jar包
这里需要引入两个jar包,用于读取照片的exif信息,里面包含照片的完整信息。
资源下载,放在最后啦。
2、读取Exif原始信息
首先利用jar包工具,
将照片里的Exif原始信息读取出来。
完整代码如下:
public static HashMap<String, Object> readPicInfo(String file_path) {
HashMap<String, Object> map = new HashMap<String,Object>();
Tag tag = null;
File jpegFile = new File(file_path);
Metadata metadata;
try {
metadata = JpegMetadataReader.readMetadata(jpegFile);
Iterator<Directory> it = metadata.getDirectories().iterator();
while (it.hasNext()) {
Directory exif = it.next();
Iterator<Tag> tags = exif.getTags().iterator();
while (tags.hasNext()) {
tag = (Tag) tags.next();
System.out.println(tag.getTagName()+"--"+tag.getDescription());
}
}
} catch (JpegProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
public static void main(String[] args) {
//传入照片的绝对路径
readPicInfo("C:\\Users\\pacer\\Desktop\\img\\others\.jpg");
}
我们来看一下,能获得那些信息:
拍摄的手机型号、GPS精确位置、拍摄时间、像素、修改日期
甚至包括,拍摄地点的海拔信息都是有的。
3、GPS格式转换
我们通过exif读取的GPS信息,是类似于度、分、秒这种格式的。
我们需要将GPS信息通过计算转换成十进制的数字位数,
这样才可以调用百度地图API或者其他的地图API来将GPS信息转换为地理位置信息。
/***
* 经纬度坐标格式转换
* @param Gps
*/
public double latitude_and_longitude_convert_to_decimal_system(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;
}
通过这个函数,我们将经纬度信息转换为10进制数字信息。
4、调用地图API将GPS坐标转换为地理位置
我们通过exif原始信息,拿到的是一串地理坐标数字。
如果想要转换为具体的地址信息,那么就需要通过各大地图API来进行转换,
小伙伴们可以自己去免费注册一个百度地图API,然后通过调用它提供的接口,
就可以将传入的GPS坐标值,转换为地址信息。当然,这里也可以用我的。
调用接口方法如下:
//接口调用方法如下:
//api_key:是你注册的key值
//coords:是你的经纬度坐标
http://api.map.baidu.com/reverse_geocoding/v3/?ak="+api_key+"&output=json&coordtype=wgs84ll&location="+coords
5、完整代码
最后,将代码整理汇总一下。
做成了一个简单的java小项目
有java环境,即可运行~~
【项目完整代码+完整jar包】
下载地址:
深藏功与名~~
推荐阅读
【Java资源下载】
- 【JDK5】jdk1.5×64位 windows版.zip
- jdk1.5×64位windows版.zip_-Web服务器文档类资源-CSDN下载
- 【JDK6】jdk-6u45-windows-x64 jdk1.6 64位 Windows版
- jdk-6u45-windows-x64jdk1.664位Windows版-其它文档类资源-CSDN下载
- 【JDK7】jdk-7u72-windows-i586-32位
- jdk-7u72-windows-i586-32位_jdk-7u17-windows-x32-Web服务器文档类资源-CSDN下载
- 【JDK8】jdk-8u131-linux-x64.tar.gz
- jdk-8u131-linux-x64.tar.gz-其它文档类资源-CSDN下载
- 【JDK8】jdk-8u131-linux-x64.tar.gz
- https://download.csdn.net/download/weixin_42350212/15809524
【python实战】
- 【python实战】前女友婚礼,python破解婚礼现场的WIFI,把名称改成了
- 【python实战】前女友发来加密的 “520快乐.pdf“,我用python破解开之后,却发现
- 【python实战】昨晚,我用python帮隔壁小姐姐P证件照 自拍,然后发现…
- 【python实战】女友半夜加班发自拍 python男友用30行代码发现惊天秘密
- 【python实战】python你TM太皮了——区区30行代码就能记录键盘的一举一动
- 【python实战】女神相册密码忘记了,我只用Python写了20行代码~~~
【pygame开发实战开发30例 完整源码】
【pygame游戏开发专栏,获取完整源码+教程】
- 一起来学pygame吧 游戏开发30例(二)——塔防游戏
- 一起来学pygame吧 游戏开发30例(四)——俄罗斯方块小游戏
- 渗透测试实战专栏
- Windows AD/Exchange管理专栏
- Linux高性能服务器搭建
- PowerShell自动化专栏
CSDN官方学习推荐 ↓ ↓ ↓
为了帮助更多小白从零进阶 Java 工程师,从CSDN官方那边搞来了一套 《Java 工程师学习成长知识图谱》
尺寸 870mm x 560mm
,知识汇总非常齐全,还可以折叠成一本书大小。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130260.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...