使用Python如何实现获取照片位置信息

发布时间:2022-8-23 09:24

通过一张照片居然发现女友在宿舍里没去上课!强大的照片位置信息获取,快来一起学习吧!

一、exifread函数库

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

安装exrfread库(PyCharm)

打开settings如下图

选择+号搜索exifread

安装即可

什么是exifread函数库

原理

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

二、获取女朋友发来的照片(单身勿扰)

女朋友居然告诉我这只狗好可爱?

哪里可爱了!!?

将图片放在代码所在的目录下

三、具体代码实现

import exifread
import re

# 读取图片为二进制格式
f = open("example2.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)

结果

四、经纬度转换

百度搜索经纬度查询

随便点进去一个能够转换的

输入得到的经纬度即可

可恶,居然在宿舍拍狗狗不去上课!!!

好了今天的分享就到这里,希望大家一起进步!

Vue3学习笔记之依赖注入Provide/Inject 网站建设

Vue3学习笔记之依赖注入Provide/Inject

Provide / Inject 通常,当我们需要从父组件向子组件传递数据时,我们使用 props。想象一下这样的结构:有一些深度嵌套的组件,而深层的子组件只需要父组件的部分内容。在这种情况下,如果...
Vue3全局实例上挂载属性方法案例讲解 网站建设

Vue3全局实例上挂载属性方法案例讲解

在大多数开发需求中,我们有时需要将某个数据,或者某个函数方法,挂载到,全局实例身上,以便于,在项目全局的任何位置都能够调用其方法,或读取其数据。 在Vue2 中,我们是在 main.js 中 直...