Python提取图片EXIF信息与GPS坐标转换详解

沿途有光
沿途有光
发布时间:2026-10-15| 2人浏览过
原创

本文介绍如何使用Python的exifread库提取JPG等格式图片的EXIF信息,重点演示从原始数据中获取GPS经纬度及高度,并通过特定公式将度分秒格式转换为十进制坐标,最终输出完整的地理位置参数。

EXIF信息与图片格式支持

从照片文件中提取GPS定位数据。可交换图像文件格式(Exchangeable image file format,简称EXIF)是专为数码相机照片制定的标准,用于记录拍摄时的属性信息与原始数据。需要注意的是,该格式通常不支持PNG、WebP等非JPEG类图片格式。

Python环境配置与数据提取

在Python环境中,可通过安装ExifRead包来读取图片属性,安装命令如下:

pip install exifread

调用exifread.process_file函数即可获取图像包含的详细信息:

img_path = r"bei_012744.jpg"
f = open(img_path, 'rb')
contents = exifread.process_file(f)
f.close()

通过单步调试查看contents变量,其内容结构如下:

GPS坐标转换逻辑与实现

接下来处理GPS坐标数据的转换逻辑:

利用exifread获取的经纬度原始数据通常呈现为列表形式,例如:纬度 [28, 56, 109097/5000],经度 [112, 38, 436353/10000]。具体的转换计算公式如下:

度 = 度 + 分/60 + 秒/3600 [28, 56, 109097/5000] = 28 + 56 / 60 + 109097/5000 / 3600 = 28.93939427777778

基于上述公式,实现坐标转换的代码如下:

def convert_gps(coord_arr):
    arr = str(coord_arr).replace('[', '').replace(']', '').split(', ')
    d = float(arr[0])
    m = float(arr[1])
    s = float(arr[2].split('/')[0]) / float(arr[2].split('/')[1])
    return float(d) + (float(m) / 60) + (float(s) / 3600)

完整代码示例与结果验证

完整的处理流程代码如下:

import exifread
 
img_path = r"bei_012744.jpg"
f = open(img_path, 'rb')
contents = exifread.process_file(f)
f.close()
 
lon = contents['GPS GPSLongitude'].printable  # 经度
lon = convert_gps(lon)
lat = contents['GPS GPSLatitude'].printable  # 纬度
lat = convert_gps(lat)
altitude = contents['GPS GPSAltitude'].printable  # 相对高度
altitude = float(altitude.split('/')[0]) / float(altitude.split('/')[1])
 
print("GPSLongitude:", lon, "\nGPSLatitude:", lat, "\naltitude:", altitude)

程序运行后的输出结果如下:

GPSLongitude: 112.64545425 GPSLatitude: 28.93939427777778 altitude: 58.009

以上就是关于利用Python读取图片属性信息的详细介绍,更多相关Python读取图片属性信息内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。