Python 图片处理库exifread详解


Posted in Python onFebruary 25, 2021

【导语】:用 python 怎样获得图片的GPS信息?今天推荐一下 exifread 这个神奇的库,不仅仅是 GPS 信息,几乎能能获得图片的所有信息,快进来看看!!

要怎样获得拍摄图片的GPS呢?这里我们需要exifread 库,这个就是用来提取 GPS 信息的。直接 pip install exifread 来安装就好了。

其实不仅能获得GPS信息,图片的几乎所有信息都能获得。exifread的作用其实是代替了查看图片属性!如下图:

Python 图片处理库exifread详解

这里用在三亚拍的骆驼照片来做个演示,看看能不能定位到三亚。

注:如果图片被压缩了的话会破坏里面的二进制信息,肯定就不能提取了哦!

Python 图片处理库exifread详解

原理是: 先把图片以二进制的格式读取出来,然后通过 exifread 库把里面的 GPS 信息提取出来,再以特定的格式打印出来,最后直接复制里面的经纬度信息,在支持通过经纬度来查位置的地图里一查就能定位到了。

exifread库读取图片的二进制示例:

Python 图片处理库exifread详解

具体代码如下

import exifread
import re

# 读取图片为二进制格式
f = open("luotuo.JPG","rb")
tags = exifread.process_file(f)

# GPS信息
GPS = {}

# 拍摄时间
Data = ""

for tag,value in tags.items():
 # 获取纬度信息
 if re.match('GPS GPSLatitude', tag):
  try:
   match_result=re.match('\[(\w*), (\w*), (\w.*)/(\w.*)\]', str(value)).groups()
   GPS['纬度'] = str(int(match_result[0])) + " " + str(int(match_result[1])) + " " + str(int(match_result[2])/int(match_result[3]))
  except:
   GPS['纬度'] = str(value)
 # 获取纬度信息
 elif re.match('GPS GPSLongitude', tag):
  try:
   match_result=re.match('\[(\w*), (\w*), (\w.*)/(\w.*)\]',str(value)).groups()
   GPS['经度'] = str(int(match_result[0])) + " " + str(int(match_result[1])) + " " + str(int(match_result[2])/int(match_result[3]))
  except:
   GPS['经度'] = str(value)
 # 获取高度
 elif re.match('GPS GPSAltitude', tag):
  GPS['高度'] = str(value)
 # 获取拍摄时间
 elif re.match('Image DateTime', tag):
  Data = str(value)

# 打印信息
print("纬 经 度:" + GPS['纬度'] + "," + GPS['经度'])
print("拍摄时间:" + Data)

如图所示,读取后的纬经度信息直接就显示出来了

Python 图片处理库exifread详解

拓展1: 后期我们可以通过百度提供的 API 接口直接把经纬度转换为具体的地点。大家可以自己来尝试一下!

拓展2: 当然,你右键图片属性的详细信息里也有这些信息。

如果想保密的话,直接点击删除属性和个人信息就能能把信息删掉。

Python 图片处理库exifread详解

到此这篇关于Python 图片处理库exifread详解的文章就介绍到这了,更多相关Python 图片处理库exifread内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
Unicode和Python的中文处理
Mar 19 Python
Python验证文件是否可读写代码分享
Dec 11 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
Python numpy线性代数用法实例解析
Nov 15 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
tensorflow 限制显存大小的实现
Feb 03 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
Mar 09 Python
记一次Django响应超慢的解决过程
Sep 17 Python
python中if嵌套命令实例讲解
Feb 25 #Python
Matplotlib animation模块实现动态图
Feb 25 #Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 #Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
Feb 24 #Python
用pip给python安装matplotlib库的详细教程
Feb 24 #Python
matplotlib 范围选区(SpanSelector)的使用
Feb 24 #Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 #Python
You might like
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
js数组去重的hash方法
2016/12/22 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
深入理解Angular中的依赖注入
2017/06/26 Javascript
vuejs父子组件之间数据交互详解
2017/08/09 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
JavaScript如何借用构造函数继承
2019/11/06 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
Python中Collection的使用小技巧
2014/08/18 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
浅谈Python3中print函数的换行
2020/08/05 Python
浅析Python中字符串的intern机制
2020/10/03 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
广州盈通面试题
2015/12/05 面试题
倡议书格式范文
2014/04/14 职场文书
公民授权委托书范本
2014/09/17 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
品质保证书格式
2015/02/28 职场文书
教师个人自我评价
2015/03/04 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript