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标准库之Sys模块使用详解
May 23 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
python编程开发之日期操作实例分析
Nov 13 Python
详解python中的json和字典dict
Jun 22 Python
python使用KNN算法识别手写数字
Apr 25 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
python区分不同数据类型的方法
Oct 14 Python
python numpy 矩阵堆叠实例
Jan 17 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
PyCharm+Miniconda3安装配置教程详解
Feb 16 Python
python字典进行运算原理及实例分享
Aug 02 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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里得到前天和昨天的日期的代码
2007/08/16 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
PHP链表操作简单示例
2016/10/15 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
详解nuxt sass全局变量(公共scss解决方案)
2018/06/27 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
全球工业:Global Industrial
2020/02/01 全球购物
Java如何格式化日期
2012/08/07 面试题
九州传奇上机题
2014/07/10 面试题
大学新学期计划书
2014/04/28 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
工作经历证明书范文
2014/11/02 职场文书
2015年安全生产责任书
2015/01/30 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
WINDOWS下安装mysql 8.x 的方法图文教程
2022/04/19 MySQL
服务器间如何实现文件共享
2022/05/20 Servers