Python 技术篇-获取图片GPS信息,锁定追踪图片拍摄地点、拍摄时间

简介: Python 技术篇-获取图片GPS信息,锁定追踪图片拍摄地点、拍摄时间

   

我们需要 exifread 库,这个就是用来提取 GPS 信息的。直接 pip install exifread 来安装就好了。

我用前段时间朋友在三亚拍的这个骆驼照片来做个演示,看看能不能定位到三亚。【用的是 iphone 手机拍摄的,其它的手机是否能提取出 GPS 信息需要大家来试试】

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

如果程序运行报 KeyError: '纬度' 错误,可能就是这个原因,可以参照文章结尾的属性查看方法来判断一下。

image.png

我们的原理就是: 先把图片以二进制的格式读取出来,然后通过 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)

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

image.png

然后在这个 GPSSPG 地图里搜出来就好了

可以看到地图直接定位到了海南省三亚市。

image.png

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

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

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

image.png

还有这些信息是可以进行编辑的,可以用来欺骗对手,嘿嘿,具体怎么玩你懂的!

我就把我图片的 iphone11 改成 iphone12 了。

image.png

喜欢的点个赞❤吧!


目录
相关文章
|
3天前
|
JavaScript API C#
【Azure Developer】Python代码调用Graph API将外部用户添加到组,结果无效,也无错误信息
根据Graph API文档,在单个请求中将多个成员添加到组时,Python代码示例中的`members@odata.bind`被错误写为`members@odata_bind`,导致用户未成功添加。
25 10
|
6天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
14天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
49 2
|
2月前
|
数据可视化 图形学 Python
在圆的外面画一个正方形:Python实现与技术解析
本文介绍了如何使用Python的`matplotlib`库绘制一个圆,并在其外部绘制一个正方形。通过计算正方形的边长和顶点坐标,实现了圆和正方形的精确对齐。代码示例详细展示了绘制过程,适合初学者学习和实践。
48 9
|
2月前
|
数据可视化 数据处理 Python
Python编程中的数据可视化技术
在Python编程中,数据可视化是一项强大的工具,它能够将复杂的数据集转化为易于理解的图形。本文将介绍如何使用matplotlib和pandas这两个流行的Python库来实现数据可视化,并展示一些实用的代码示例。通过这些示例,读者将学会如何创建各种图表,包括折线图、柱状图和散点图等,以便更好地理解和呈现数据。
|
2月前
|
数据采集 API 定位技术
Python技术进阶:动态代理IP的跨境电商解决方案
Python技术进阶:动态代理IP的跨境电商解决方案
|
2月前
|
数据采集 JavaScript 程序员
探索CSDN博客数据:使用Python爬虫技术
本文介绍了如何利用Python的requests和pyquery库爬取CSDN博客数据,包括环境准备、代码解析及注意事项,适合初学者学习。
89 0
|
2月前
|
数据采集 存储 分布式计算
超酷炫Python技术:交通数据的多维度分析
超酷炫Python技术:交通数据的多维度分析
|
8月前
|
数据安全/隐私保护 Python
Python3给图片添加水印
Python3给图片添加水印
107 1
|
数据采集 分布式计算 搜索推荐
使用Python实现网页中图片的批量下载和水印添加保存
使用Python实现网页中图片的批量下载和水印添加保存