51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Python 读写图像 GPS 信息

JPG 图像中经常会保存相机记录的图像拍摄位置的 GPS 信息,本文记录 Python 获取、保存图像拍摄位置信息的方法。

简介 {#简介}

EXIF(Exchangeable Image File Format)是一种用于存储图像拍摄相关信息的标准,这些信息包括相机设置、拍摄时间、地点等。EXIF信息通常嵌入在JPEG、TIFF和RAW图像文件中,以便于软件和设备(如数字相机、手机、扫描仪)能够读取和使用这些信息。

在EXIF信息中,GPS信息是一个重要的组成部分,它可以提供关于图像拍摄位置的详细数据。以下是GPS信息可能包含的内容:

  1. GPS版本信息:表示EXIF中GPS信息的版本号。
  2. GPS国界:标识图像拍摄位置所在的国家或地区。
  3. GPS定位日期和时间:记录图像拍摄时的日期和时间。
  4. GPS卫星信息:显示在图像拍摄时,哪些卫星参与了GPS定位。
  5. GPS经度:表示图像拍摄位置的经度,通常以度、分、秒的形式表示。
  6. GPS纬度:表示图像拍摄位置的纬度,同样以度、分、秒的形式表示。
  7. GPS高度:以米为单位,表示图像拍摄位置相对于海平面的高度。
  8. GPS速度:表示图像拍摄时的移动速度,通常以千米/小时为单位。

通过这些GPS信息,我们可以了解到图像的拍摄位置、时间和拍摄时的运动状态。这些信息对于图片的归档、分享和地理信息系统(GIS)分析等方面非常有用。

Python 获取路线 {#Python-获取路线}

可以在 Python 中很容易地获取到图像的 exif 信息,并从中提取 gps 信息,本质上都是从文件中读取 exif 信息字段,将其解析成我们可读的 gps 信息。

这里介绍三种实现方法:

  1. Pillow 路线
  2. piexif
  3. 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信息这里两种方式:

  1. pillow 自带信息

  2. piexif 信息压缩成字符串送入 pil 写图像中

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/coding/python/get-jpg-img-gps-info/get-jpg-img-gps-info/

赞(0)
未经允许不得转载:工具盒子 » Python 读写图像 GPS 信息