Python实现获取照片的地理定位信息

  • Post category:Python

下面我将详细讲解Python实现获取照片的地理定位信息的完整攻略。

1. 安装exifread库

Python中提供了exifread库,可以通过安装该库来获得照片的Exif信息。可以通过以下命令安装:

pip install exifread

2. 导入库

安装完exifread库后,我们需要在Python代码中导入该库:

import exifread

3. 打开照片并读取Exif信息

我们需要先打开照片,并读取其Exif信息。可以通过以下代码实现:

with open('photo.jpg', 'rb') as f:
    exif_tags = exifread.process_file(f)

其中,’photo.jpg’是需要获取地理定位信息的照片文件名。

4. 获取地理定位信息

经过第3步读取Exif信息之后,我们就可以获取该照片的地理定位信息了。可以通过以下代码实现:

if 'GPSInfo' in exif_tags:
    gps_tags = exif_tags['GPSInfo']
    lat = gps_tags['GPSLatitude']
    lat_d = gps_tags['GPSLatitudeRef']
    lon = gps_tags['GPSLongitude']
    lon_d = gps_tags['GPSLongitudeRef']
    altitude = gps_tags['GPSAltitude']
    altitude_r = gps_tags['GPSAltitudeRef']
else:
    print('此照片没有地理定位信息')

其中,如果该照片没有地理定位信息的话,将会打印“此照片没有地理定位信息”。

示例说明:

示例1:获取单张照片的地理定位信息

下面是获取单张照片的地理定位信息的示例代码:

import exifread

filename = "photo/test.jpg"

with open(filename, 'rb') as f:
    exif_tags = exifread.process_file(f)

if 'GPSInfo' in exif_tags:
    gps_tags = exif_tags['GPSInfo']
    lat = gps_tags['GPSLatitude']
    lat_dir = gps_tags['GPSLatitudeRef']
    lon = gps_tags['GPSLongitude']
    lon_dir = gps_tags['GPSLongitudeRef']
    altitude = gps_tags['GPSAltitude']
    altitude_dir = gps_tags['GPSAltitudeRef']
    print('该照片的地理定位信息为:纬度:', lat, lat_dir, ', 经度:', lon, lon_dir, ', 海拔:', altitude, altitude_dir)
else:
    print('此照片没有地理定位信息')

运行上述代码后,即可输出该照片的地理定位信息。

示例2:获取照片文件夹中所有照片的地理定位信息

下面是获取照片文件夹中所有照片的地理定位信息的示例代码:

import os
import exifread

path = "photo"

for filename in os.listdir(path):
    if filename.endswith(".jpg"):
        with open(os.path.join(path, filename), 'rb') as f:
            exif_tags = exifread.process_file(f)
            if 'GPSInfo' in exif_tags:
                gps_tags = exif_tags['GPSInfo']
                lat = gps_tags['GPSLatitude']
                lat_dir = gps_tags['GPSLatitudeRef']
                lon = gps_tags['GPSLongitude']
                lon_dir = gps_tags['GPSLongitudeRef']
                altitude = gps_tags['GPSAltitude']
                altitude_dir = gps_tags['GPSAltitudeRef']
                print('照片', filename, '的地理定位信息为:纬度:', lat, lat_dir, ', 经度:', lon, lon_dir, ', 海拔:', altitude, altitude_dir)
            else:
                print('照片', filename, '没有地理定位信息')

运行上述代码后,即可输出照片文件夹中所有照片的地理定位信息。