现在很多手机都支援在照片中的exif中存储位置gps信息了,不过有时假如我们想在在线地图中定位照片中却犯了难,windows或acdsee显示的都是度分秒的方式,不能复制也不适宜得到到在线地图中定位,我们可以利用python相关库处理。

from PIL import Image

from PIL.ExifTags import TAGS

def get_exif_data(fname): #定义获取图片exif的方法

"""Get embedded EXIF data from image file."""

ret = {} #创建一个字典对象存储exif的条目如相机品牌:相应品牌这样的数据

try:

img = Image.open(fname) #创建图像对象

if hasattr(img, '_getexif'): #检查图像对象有无_getexif属性,发现也有getexif属性,内容好像差不多

exifinfo = img._getexif() #取出img的_getexif属性,这是一个字典对象

if exifinfo != None: #判断检查

for tag, value in exifinfo.items(): #取出字典的项,值

decoded = TAGS.get(tag, tag) #TAGS实际是一字典对象,记录着类型001:相机品牌,002:光圈这样的条目,_getexif的项全是数字,并不是具体项目,所以需在TAGS里检索对应的实际项目

ret[decoded] = value

except IOError:

print ('IOERROR ' + fname)

return ret

定义了方法后我们可以取出exif里的gps信息

if __name__ == '__main__':

fileName = r'' #有GPS的照片位置

Img_exif = get_exif_data(fileName) #用自定函数取得exif信息

if Gps_Info:=Img_exif.get('GPSInfo'): #简单做个判定有无gps信息,这里用了海象运算符

print(Gps_Info.get(1)) #1项对应是N还是S,也就是南北

NS_point=(Gps_Info.get(2)) #2项对应是纬度信息,是多元元组,每组是度,分,秒,里面数值是当前值及精度,NS_point[0][0] / NS_point[0][1]这个就是度了,以此类推,所以后面两组分别除60,3600,换算为度,并相加他们就组成以小数表示的纬度

print(NS_point[0][0] / NS_point[0][1] + NS_point[1][0] / NS_point[1][1] / 60 + NS_point[2][0] / NS_point[2][1] / 3600)

print(Gps_Info.get(3)) #3项对应是EW也就是东西

EW_point=Gps_Info.get(4) #如上处理经度信息

print(EW_point[0][0] / EW_point[0][1] + EW_point[1][0] / EW_point[1][1] / 60 + EW_point[2][0] / EW_point[2][1] / 3600)

#得出这些信息大家可具体灵活运用,比如有些在线地图可直接在地址处提交经纬度定位到GPS具体位置的

python查看图片的gps_浅析python中获取图片中exif中的gps方法相关推荐

  1. python查看图片颜色统计_Python通过PIL获取图片主要颜色并和颜色库进行对比的方法...

    本文实例讲述了Python通过PIL获取图片主要颜色并和颜色库进行对比的方法.分享给大家供大家参考.具体分析如下: 这段代码主要用来从图片提取其主要颜色,类似Goolge和Baidu的图片搜索时可以指 ...

  2. WEB自动化(5)获取网站验证码即从验证码截图中获取图片中的字符串

    WEB自动化(1)环境安装及打开浏览器实例 WEB自动化(2)常用的元素定位方法之xpath详解 WEB自动化(3)PO设计模式原理与实现 WEB自动化(4)使用selenium将网站验证码截图保存为 ...

  3. java获取jsp页面参数_jsp页面中获取servlet请求中的参数方法总结

    jsp页面中获取servlet请求中的参数的办法详解 在JAVA WEB应用中,如何获取servlet请求中的参数,并传递给跳转的JSP页面?例如访问http://localhost:8088/bbs ...

  4. 在swt中获取jar包中的文件 uri is not hierarchical

    uri is not hierarchical 学习了:http://blog.csdn.net/zdsdiablo/article/details/1519719 在swt中获取jar包中的文件: ...

  5. java List最大_在java中获取List集合中最大的日期时间操作

    取list集合中最大的日期, 可以用date max = collections.max(datelist);, 传入一个日期集合, 就可以获取, 工作中有这个需求, 就查找到这个, 代码如下 } e ...

  6. 【SpringBoot】在普通类中获取spring容器中的bean

    这段时间公司搞封闭开发,做一个联通总部的客服系统项目,是基于springboot的.在开发工程中遇到一个页面datagrid数据排序的功能,因为有多个表的数据都要用到排序功能,于是我就写了一个排序功能 ...

  7. (转)Shell中获取字符串长度的七种方法

    Shell中获取字符串长度的七种方法 原文:http://blog.csdn.net/jerry_1126/article/details/51835119 求字符串操作在shell脚本中很常用,下面 ...

  8. C# WinForm中获取当前程序运行目录的方法

    C# WinForm中获取当前程序运行目录的方法: "AppDomain.CurrentDomain.BaseDirectory":获取当前应用程序所在目录的路径,最后包含&quo ...

  9. 在普通类中获取spring容器中的bean

    在普通类中获取spring容器中的bean 1.工具类 package com.itheima.hchat.util;import org.springframework.beans.BeansExc ...

最新文章

  1. Linux卸载unity,你如何删除Unity?
  2. 皮一皮:P没P图?傻傻分不清...
  3. 寄存器---汇编学习笔记
  4. 使用Google Test的一个简单例子
  5. vqa mcb_MCB的完整形式是什么?
  6. Oracle数据库的备份与恢复技术
  7. 工作资讯004---多范式编程语言
  8. 【李宏毅2020 ML/DL】P23 Transformer | Self-attention, Multi-head Self-attention
  9. android qq纯净输入法,QQ输入法纯净版更新 同步手机词库
  10. 远程桌面同步本地计算机,微软更新远程桌面应用现在终于可以在本地和远程计算机上复制文件...
  11. excel小技巧 生成递增时间区间
  12. 计算机网络 通信网络笔记(自顶向下的方法)from top to the botton of MIT
  13. 我的世界Catserver开服
  14. Centos7安装并使用gcc编译器
  15. Vue+element-ui实现表格数据渲染+分页
  16. bach cello
  17. 匹配问题与匈牙利算法
  18. Android学习笔记Android必备开发工具之一命令行创建Git库
  19. vncserver win10设置安装
  20. STM32阿波罗F767开发板资源介绍

热门文章

  1. 程序员课余知识的补给站
  2. 今日科技联播:朝鲜发最新智能手机,火星移民又有新希望
  3. MyEclipse导入Web项目并运行
  4. 倚天总显示连接服务器不动,倚天手游好玩吗 倚天手游无法连接服务器解决方案分享...
  5. 从 SXX32F103 移植到 MH32F103A参考文档
  6. java计算机毕业设计基于springboot小区物业管理系统
  7. WKWebView WebKit (SwiftUI中文文档手册)
  8. 外汇黄金交易平台排行榜2019
  9. HCIP-3 ---MGRE
  10. 泰科电子3D CAD电子目录轻松免费下载