python图片二进制流转换成图片_神奇的Python图片处理库exifread

本文介绍了如何使用Python的exifread库从图片的二进制流中提取GPS信息。exifread不仅可以获取GPS数据,还能读取图片的其他详细信息。示例代码展示了如何读取并打印出经纬度,强调了图片压缩可能会影响信息提取,并提到可通过API将经纬度转换为具体地点。
摘要由CSDN通过智能技术生成

来源:挣扎的蓝藻

https://lanzao.blog.csdn.net/article/details/103080034

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


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

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

988d2bbb7b9ba1ea8ad1a647dc1ada8a.png

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


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

b2892317d1fbffab07e09bcdb7e1c65c.png

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

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

0089686e3f24fa4d42a1e540b39a7a63.png

具体代码如下

import exifreadimport 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)

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

0293441299e90caa98469b7c629d9859.png

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

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


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

f56105c338b8761af7e34cd328146073.png

PS:如果觉得分享内容有一些帮助,欢迎大家随手分享、点赞、在看。

< END >

56897fabbefb421b70cafc5506ed0376.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值