下面我将详细讲解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, '没有地理定位信息')
运行上述代码后,即可输出照片文件夹中所有照片的地理定位信息。