程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信[Python基础]

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于挣扎的蓝藻

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

 

前言

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

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

 

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

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

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

 

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

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

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

 

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

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

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

 

具体代码如下

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)

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

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

 

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

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

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

程序员是如何通过一张图片获取GPS信息的?简单得不敢相信

以上是 程序员是如何通过一张图片获取GPS信息的?简单得不敢相信 的全部内容, 来源链接: utcz.com/z/537657.html

回到顶部