获取照片位置信息并不是一个复杂的任务。可以通过 Python 的 EXIF 库读取照片中存储的位置信息。步骤分为以下三步:
在终端中输入以下命令可以安装 exifread 库:
pip install exifread
在 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 代码段有类似的属性名称。
调用 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 信息,因此搜索您的图片时,请注意谨慎选择,以免浪费不必要的时间。