利用Python实现获取照片位置信息

  

获取照片位置信息并不是一个复杂的任务。可以通过 Python 的 EXIF 库读取照片中存储的位置信息。步骤分为以下三步:

  1. 安装 exifread 库

在终端中输入以下命令可以安装 exifread 库:

pip install exifread
  1. 导入库并读取照片信息

在 Python 脚本中导入 exifread 库

import exifread

读取照片元数据信息,并解析其中 GPS 标签中的位置信息

def get_exif_location(file_path):
    with open(file_path, 'rb') as f:
        tags = exifread.process_file(f)
        latitude = None
        longitude = None
        for tag in tags:
            if 'GPS GPSLatitude' in tag:
                latitude_str = tags['GPS GPSLatitude'].printable
                degrees, minutes, seconds = [float(x) for x in latitude_str.replace(',', '').split('/')]
                latitude = degrees + minutes / 60.0 + seconds / 3600.0

            elif 'GPS GPSLongitude' in tag:
                longitude_str = tags['GPS GPSLongitude'].printable
                degrees, minutes, seconds = [float(x) for x in longitude_str.replace(',', '').split('/')]
                longitude = degrees + minutes / 60.0 + seconds / 3600.0

            elif 'GPS GPSAltitude' in tag:
                altitude_str = tags['GPS GPSAltitude'].printable
                altitude = float(altitude_str)
    return latitude, longitude, altitude

请注意,这只是一个简单的方法,因为可以有多个 EXIF 代码段有类似的属性名称。

  1. 调用函数并显示位置信息

调用 get_exif_location 函数并将照片路径作为参数传入。函数将返回一个元组,其中包含经度和纬度。我们可以打印这个元组来显示位置信息。

lat, lon, alt = get_exif_location('/path/to/photo.jpg')
print("Latitude: ", lat)
print("Longitude: ", lon)
print("Altitude: ", alt)

例如,您可以使用以下代码来读取您的照片,并显示位置信息:

lat, lon, alt = get_exif_location('/Users/username/Desktop/photo.jpg')
print("Latitude: ", lat)
print("Longitude: ", lon)
print("Altitude: ", alt)

这将返回位置信息,如下所示:

Latitude:  Longitude: 
34.048927237758
-118.25260180235
None

示例1:

使用上面的代码来读取另一张照片时,如果照片中包含所需的位置信息,您将看到类似下面的输出:

lat, lon, alt = get_exif_location('/Users/username/Desktop/photo2.jpg')
print("Latitude: ", lat)
print("Longitude: ", lon)
print("Altitude: ", alt)

这将返回位置信息,如下所示:

Latitude: 
40.70342

Longitude: 
-74.0179

Altitude: 
None

示例2:

如果您想要一次处理一批照片,这个函数还可以在一个 for 循环中使用。您可以将照片路径存储在一个列表中,然后遍历列表并为每个文件调用 get_exif_location 函数,如下所示:

import os

photos_directory = "/Users/username/Desktop/photos"
photos_list = os.listdir(photos_directory)

for photo in photos_list:
    file_path = os.path.join(photos_directory, photo)
    lat, lon, alt = get_exif_location(file_path)
    print(f"Latitude: {lat}, Longitude: {lon}, Altitude: {alt}")

注意:这个函数并不能保证所有照片都能成功读取 GPS 信息,因此搜索您的图片时,请注意谨慎选择,以免浪费不必要的时间。

相关文章