JPG 图像中经常会保存相机记录的图像拍摄位置的 GPS 信息,本文记录 Python 获取、保存图像拍摄位置信息的方法。
简介 {#简介}
EXIF(Exchangeable Image File Format)是一种用于存储图像拍摄相关信息的标准,这些信息包括相机设置、拍摄时间、地点等。EXIF信息通常嵌入在JPEG、TIFF和RAW图像文件中,以便于软件和设备(如数字相机、手机、扫描仪)能够读取和使用这些信息。
在EXIF信息中,GPS信息是一个重要的组成部分,它可以提供关于图像拍摄位置的详细数据。以下是GPS信息可能包含的内容:
- GPS版本信息:表示EXIF中GPS信息的版本号。
- GPS国界:标识图像拍摄位置所在的国家或地区。
- GPS定位日期和时间:记录图像拍摄时的日期和时间。
- GPS卫星信息:显示在图像拍摄时,哪些卫星参与了GPS定位。
- GPS经度:表示图像拍摄位置的经度,通常以度、分、秒的形式表示。
- GPS纬度:表示图像拍摄位置的纬度,同样以度、分、秒的形式表示。
- GPS高度:以米为单位,表示图像拍摄位置相对于海平面的高度。
- GPS速度:表示图像拍摄时的移动速度,通常以千米/小时为单位。
通过这些GPS信息,我们可以了解到图像的拍摄位置、时间和拍摄时的运动状态。这些信息对于图片的归档、分享和地理信息系统(GIS)分析等方面非常有用。
Python 获取路线 {#Python-获取路线}
可以在 Python 中很容易地获取到图像的 exif 信息,并从中提取 gps 信息,本质上都是从文件中读取 exif 信息字段,将其解析成我们可读的 gps 信息。
这里介绍三种实现方法:
- Pillow 路线
- piexif
- exifread
经度、纬度概念 {#经度、纬度概念}
-
经度 Longitude , 本初子午线 位置 为 0 度经线 , 相当于水平 x 轴 的坐标 , 经度的取值范围 -180 度 ~ +180 度 ;
-
纬度 Latitude , 相当于 垂直 y 轴 的坐标 , 纬度的取值范围 -90 度 ~ + 90 度 ;
-
西经 和 南纬 是负数 ;
Pillow {#Pillow}
安装 {#安装}
使用 {#使用}
上源码:
输出:
含义:
- 1 ------ 南北
- 2 ------ 纬度(度分秒)
- 3 ------ 东西
- 4 ------ 经度(度分秒)
- 6 ------ 高度(米)
piexif {#piexif}
安装 {#安装-2}
使用 {#使用-2}
上源码:
输出:
含义:
其中的 tuple 需要第一个数除以第二个数
- 1 ------ 南北
- 2 ------ 纬度(度分秒)
- 3 ------ 东西
- 4 ------ 经度(度分秒)
- 6 ------ 高度(米)
exifread {#exifread}
安装 {#安装-3}
使用 {#使用-3}
上源码:
输出:
性能评估 {#性能评估}
连续运行一千次,统计时间:
输出:
结论 :piexif
又快又好用。
写入exif信息 {#写入exif信息}
当需要用Python 保存图像并附带 exif 信息时,就只能用到 Pillow 库了,exif信息这里两种方式:
-
pillow 自带信息
-
piexif 信息压缩成字符串送入 pil 写图像中
参考资料 {#参考资料}
- https://blog.csdn.net/shulianghan/article/details/129749877
- https://blog.csdn.net/Jeff_zjf/article/details/121680347
文章链接:
https://www.zywvvd.com/notes/coding/python/get-jpg-img-gps-info/get-jpg-img-gps-info/