今天突然看到有人写过获取图片中位置信息的程序。我觉得很有趣,也就自己实践了一下,研究了一下

话不多说,先上代码

 #!/usr/bin/env python3
# -*- coding: utf-8 -*- 'A program used to get GPS information in picture' __author__ = 'Albert Yang' import exifread
import re def FindGPSTime(filePath):
GPS={}
Data=""
f=open(filePath,'rb')
tags=exifread.process_file(f)
#print("f:",f.read())
#print("tags:",tags)
#for key in tags:
# print(key) for tag,value in tags.items():
if re.match('GPS GPSLatitudeRef',tag):
GPS['GPSLatitudeRef(纬度标识)']=str(value)
elif re.match('GPS GPSLongitudeRef',tag):
GPS['GPSLongitudeRef(经度标识)']=str(value)
elif re.match('GPS GPSAltitudeRef',tag):
GPS['GPSAltitudeRef(高度标识)']=str(value)
elif re.match('GPS GPSLatitude',tag):
try:
match_result=re.match('\[(\w*), (\w*), (\w.*)/(\w.*)\]',str(value)).groups() #匹配临近的字符
GPS['GPSLatitude(纬度)']=int(match_result[0]),int(match_result[1]),int(match_result[2])/int(match_result[3])
except:
GPS['GPSLatitude(纬度)']=str(value)
elif re.match('GPS GPSLongitude',tag):
try:
match_result=re.match('\[(\w*), (\w*), (\w.*)/(\w.*)\]',str(value)).groups()
GPS['GPSLongitude(经度)']=[int(match_result[0]),int(match_result[1]),int(match_result[2])/int(match_result[3])]
except:
GPS['GPSLongitude(经度)']=str(value)
elif re.match('GPS GPSAltitude',tag):
GPS['GPSAltitude(高度)']=str(value)
elif re.match('Image DateTime',tag):
Data=str(value)
return {'GPS 信息':GPS,'时间信息':Data}
#http: // www.gpsspg.com / maps.htm if __name__=='__main__':
print(FindGPSTime("3.jpg"))

几个关键点:

1,exifread包就是用来专门获取图像的exif信息的。

2,exifread()函数返回字典,字典里的value值是IfdTag类型的。需要用str()转化成str类型才好处理

3,re模块\w是匹配字符,加上*大致是匹配多个的意思

这是我的运行结果

{'GPS 信息': {'GPSAltitudeRef(高度标识)': '0', 'GPSLatitude(纬度)': (**, **, *********), 'GPSAltitude(高度)': '0', 'GPSLongitude(经度)': [***, ***, *******], 'GPSLatitudeRef(纬度标识)': 'N', 'GPSLongitudeRef(经度标识)': 'E'}, '时间信息': '2018:08:31 16:03:06'}

里面的***是我人工打码的。就是三个数字,分别是**°**’****”。就是经纬度的多少度,多少分,多少秒。

得到经纬度后

打开http://www.gpsspg.com/maps.htm这个网站。把经纬度信息输进去就行啦。

注意输入格式,先是纬度,再是经度。纬经度之间用逗号隔开。度,分,秒之间用空格隔开

具体的就是这样。挺好玩的,不过根据我的实验,QQ空间,朋友圈,微博里的图片都提取不出。应该是因为都压缩了。不过我让我朋友发给我的照片都能提取出来。还行。

其他更好玩的你们再挖掘吧,觉得不错记得赞一下

实战项目——获取图片中的GPS位置信息和拍摄时间的更多相关文章

  1. vue 组件传递值以及获取DOM元素的位置信息

    1.父组件 select_li.vue 1.1 父组件模板 <template> <div id='selectLi' ref="selectLi"> &l ...

  2. 使用SerialPort 读取外置GPS信息和使用GeoCoordinateWatcher获取内置gps的信息

    简介最近工作中需要读取gps设备的信息,平板本身有内置的gps设备,但是精度不够,就又添加了一个外置的gps.对于外置的gps,我们主要通过SerialPort类来获得串口的信息,然后对接收到的内容进 ...

  3. thinkphp获取ip地址及位置信息

    ThinkPHP\Common\funcitons.php下有一个get_client_ip()能够获取ip地址 但是有时候不够准确 找到了下面一段来 function get_client_ip($ ...

  4. c# 获取当前行的位置信息

    StackTrace st = new StackTrace(new StackFrame(true)); StackFrame sf = st.GetFrame(0); //文件位置 Console ...

  5. jquery获取元素在文档中的位置信息以及滚动条位置(转)

    jquery获取元素在文档中的位置信息以及滚动条位置 http://blog.csdn.net/qq_34095777/article/details/78750886     原文链接 原创 201 ...

  6. 获取元素位置信息和所占空间大小(via:js&jquery)

    工作中有一个很常见的需求,hover或者click某元素后,在该元素旁边出现弹框,主要就是获取该元素的位置坐标以及元素所占区块的大小.最近工作中就遇到了,发现js和jquery的实现方法有很大的区别, ...

  7. iOS项目开发实战——使用CoreLocation获取当前位置信息

    随着基于位置服务LBS和移动互联网的兴起,你的位置是越来越重要的一个信息.位置服务已经是当前的热门应用如微信.陌陌等社交应用的杀手锏.而在iOS开发中,苹果已经给我们提供了一个位置接口.CoreLoc ...

  8. Android GPS应用:动态获取位置信息

    在上文中,介绍了GPS概念及Android开发GPS应用涉及到的常用类和方法.在本文中,开发一个小应用,实时获取定位信息,包括用户所在的纬度.经度.高度.方向.移动速度等.代码如下: Activity ...

  9. Android初级教程获取手机位置信息GPS与动态获取最佳方式

    简单介绍一下gps定位的操作. 主要是靠locationmanger这个api完成的一些操作:通过获取这个实例,然后调用它的requestLocationUpdates方法进行注册.传入的参数分别有以 ...

随机推荐

  1. 如何用WebIDE打开并运行CRM Fiori应用

    访问Web IDE url 在Web IDE里进行项目clone操作: https://:8080/#/admin/projects/fnf/customer/cus.crm.opportunity ...

  2. 使用RichTextBox控件保存文件

    实习效果: 知识运用: RichTextBox控件的SaveFile方法 SaveFileDialog对象的ShowDialog方法 实现代码: private void 打开RTF文件ToolStr ...

  3. 如何使用工具进行C/C++的内存泄漏检测

    系统编程中一个重要的方面就是有效地处理与内存相关的问题.你的工作越接近系统,你就需要面对越多的内存问题.有时这些问题非常琐碎,而更多时候它会演变成一个调试内存问题的恶梦.所以,在实践中会用到很多工具来 ...

  4. CSS3小知识

    1.边框圆角,边框阴影 border-radius:6px; // border-radius:50%; //圆形 box-shadow: 1px 1px 1px #666; //box-shadow ...

  5. 关于使用Java开发Mis系统

    如何使用Java开发一个小型的信息管理系统,首先我们应该知道要使用什么样的方法. 1.Java基础 2.JSP+Servlet+JavaBean JSP是服务器端的编程语言,见得比较多的是在一些网站上 ...

  6. 简单聊聊四层/七层模型到HTTP

    本文内容借鉴这篇博客:https://blog.csdn.net/agzhchren/article/details/79173491 但是这篇博客也是该博主转载的,文章具体出处我没有找到,如果有人知 ...

  7. TI C6000 优化进阶:循环最重要!

    软件流水循环 1. C6000流水线(Pipeline) 一个指令的处理过程并不是一步完成,它被分为三个阶段:取指(Fetch).译码(Decode).执行(Excute).将每一个阶段放入独立的流程 ...

  8. eeeeeeeeeee

    http://58.241.123.38/hot.cdn.baidupcs.com/file/91623e76f776475da9c3223cdac861f0?xcode=68983c005f6e3c ...

  9. 【转载】2015年8月编程语言排行榜:Java遥遥领先

    Java以4.5%的差距遥遥领先于第二名,回顾以前Java有这样的成绩还是在2008年.Java version 8的成功主要是因为函数式编程习语的添加.Java出现下滑是在2010年 Oracle收 ...

  10. [转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法

    问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示:   类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varcha ...