pthon提取文件夹里所有照片的经纬度并导出表格
时间: 2024-05-09 21:15:13 浏览: 8
你可以使用Python的Pillow和ExifRead库来提取文件夹里所有照片的经纬度,并将其导出到表格中。以下是一个示例代码:
```python
import os
import exifread
from PIL import Image
# 设置文件夹路径
folder_path = 'your_folder_path'
# 创建一个空的列表来存储所有的照片信息
photo_info_list = []
# 遍历文件夹中的所有文件
for file_name in os.listdir(folder_path):
# 只处理JPG和JPEG格式的文件
if file_name.endswith('.jpg') or file_name.endswith('.jpeg'):
# 打开图片文件并获取Exif信息
file_path = os.path.join(folder_path, file_name)
with open(file_path, 'rb') as f:
exif_tags = exifread.process_file(f)
# 获取经纬度信息
gps_latitude_ref = exif_tags.get('GPS GPSLatitudeRef')
gps_latitude = exif_tags.get('GPS GPSLatitude')
gps_longitude_ref = exif_tags.get('GPS GPSLongitudeRef')
gps_longitude = exif_tags.get('GPS GPSLongitude')
# 将经纬度信息转换为度数表示
if gps_latitude and gps_longitude:
latitude = float(str(gps_latitude).replace('[','').replace(']','').replace(',',''))
longitude = float(str(gps_longitude).replace('[','').replace(']','').replace(',',''))
if gps_latitude_ref.values[0] == 'S':
latitude = -latitude
if gps_longitude_ref.values[0] == 'W':
longitude = -longitude
else:
latitude = None
longitude = None
# 获取其他信息
image = Image.open(file_path)
width, height = image.size
date_taken = exif_tags.get('EXIF DateTimeOriginal')
camera_make = exif_tags.get('Image Make')
camera_model = exif_tags.get('Image Model')
# 将所有信息添加到列表中
photo_info_list.append({
'File Name': file_name,
'Latitude': latitude,
'Longitude': longitude,
'Width': width,
'Height': height,
'Date Taken': date_taken,
'Camera Make': camera_make,
'Camera Model': camera_model
})
# 将列表中的信息导出到CSV文件中
import csv
with open('photo_info.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=photo_info_list[0].keys())
writer.writeheader()
for photo_info in photo_info_list:
writer.writerow(photo_info)
```
在这个示例代码中,我们首先遍历指定的文件夹中的所有文件,并只处理JPG和JPEG格式的文件。然后,我们打开每个文件并获取其Exif信息,包括经纬度、图片尺寸、拍摄日期和相机型号等。接下来,我们将所有信息添加到一个列表中,并在最后将其导出到CSV文件中。