大家好,我是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\\10.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.5x64位 windows版.zip
  • jdk1.5x64位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例 完整源码】

  • https://download.csdn.net/download/weixin_42350212/15836285

【pygame游戏开发专栏,获取完整源码+教程】

CSDN官方学习推荐 ↓ ↓ ↓

为了帮助更多小白从零进阶 Java 工程师,从CSDN官方那边搞来了一套 《Java 工程师学习成长知识图谱》

尺寸 870mm x 560mm,知识汇总非常齐全,还可以折叠成一本书大小。

如何读取照片的GPS信息?—最好的语言Java实现起来就这么简单【手把手教程+完整代码】相关推荐

  1. python提取图片gps坐标,使用Python读取照片的GPS信息

    来源:https://www.cnblogs.com/baby123/p/12213794.html 昨天听人说,用手机拍照会带着GPS信息,原来没注意过这个,因此查看下并使用代码获取照片里的GPS信 ...

  2. Python读取安卓手机GPS信息

    问题描述:使用Python读取安卓手机GPS信息,要求手机已经打开GPS. 思考一下: 1)如何在安卓手机上编写Python程序: 2)如何调用安卓系统提供的功能: 3)如何读取GPS数据. 思考上面 ...

  3. 通过Exiv2读取照片的Exif信息获取GPS,焦距等信息

    这里简单介绍一下如何通过开源C++工具包Exiv2读取图片中的属性信息 其实做这项工作之前也想偷懒百度一下的,大都是Java写的安卓的 ExifInterface 类,这和我的工作扯不上一点关系啊,最 ...

  4. PHP如何读取照片的exif信息

    什么是Exif? Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的.实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈.快门.白平衡.ISO.焦距.日期时 ...

  5. C# 读取照片的EXIF信息

    一.使用 MetadataExtractor 读取 EXIF 信息 1.NuGet 中安装 在 NuGet 中搜索并安装 MetadataExtractor: 2.包信息 我安装后会有两个包:Meta ...

  6. 照片的GPS位置信息读取

    一.照片的 EXIF信息 手机.相机拍摄的照片会自带一些诸如拍摄时间.地点.镜头型号.曝光度.图像尺寸等附加信息,在Windows上可以通过右键文件属性查看和修改相关参数. EXIF (exchang ...

  7. qpython获取手机gps_基于Python获取照片的GPS位置信息

    这篇文章主要介绍了基于Python获取照片的GPS位置信息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 昨天听人说,用手机拍照会带着GPS信息,原 ...

  8. 用Python读取照片拍摄的详细信息(拍摄时间、地址等)

    前言   其实咱们平时拍摄的照片里隐藏了大量的私密信息,例如:拍摄时间.极其精确的GPS信息等.接下来尝试用python脚本分析照片,获取照片原图的拍摄信息. 1.准备条件   pip install ...

  9. 纯 python 开发批量读取照片 Exif 信息的小程序

    自己动手写一些小程序解决工作中的问题,是学习 python 的高效途径.这中间会遇到一些不动手想不到的问题,一个一个地解决它们,你 python 开发水平就会突飞猛进! 本文总结一下实战 python ...

最新文章

  1. 使用VC实现一个“智能”自增减线程池
  2. 华为选拔人才的五个素质
  3. 分割2021算法合集
  4. python项目-马哥教育官网-专业Linux培训班,Python培训机构
  5. Centos7 网络配置
  6. 【Linux系统编程】Linux线程浅析
  7. CSS(五):背景、列表、超链接伪类、鼠标形状控制属性
  8. 用计算机怎么打出狂浪字谱,狂浪歌曲简谱
  9. 四、PHP框架Laravel学习笔记——路由命名和分组
  10. mysql锁总结知乎_MySQL锁总结
  11. 安徽初二计算机考试试题,安徽省八年级信息技术会考题库
  12. Laravel重写或者覆盖vender下面的方法
  13. 计算机开机总要按f1键,为什么开机要按f1键?win7每次开机按f1才能进入系统怎么办...
  14. 领带打法最新10种(图解)
  15. Android 获取 OAID ,替换 IMEI (兼容 Android 10获取IMEI问题)
  16. 石油化工企业防雷工程和防雷接地应用方案
  17. 速写在网站建设中的重要地位
  18. Code for VeLO 1: Training Versatile Learned Optimizers by Scaling Up
  19. KL,JS,Wasserstein距离
  20. yolov4评估自己的模型

热门文章

  1. 详解HashMap的put方法
  2. 数据结构(python) —— 【29: 贪心算法之换钱问题】
  3. 顺义区服务器虚拟化,北京银行顺义数据中心私有云项目
  4. Flask中为什么要使用蓝图?
  5. Android 悬浮按钮的简单实现
  6. 设计灵感|版式之美!左右布局图文排版设计优秀案例
  7. 希尔顿携手RB和Mayo Clinic,全面升级酒店入住卫生规范
  8. 低功耗蓝牙BLE之连接事件、连接参数和更新方法(程序解读)
  9. Power bi 超市运营数据分析
  10. USACO January 2014 Bronze Level