安装exifread模块,可以解析出图像中的经纬度、拍摄时间以及其它信息
至于apikey,可以到高德平台免费申请一个,如下图
import exifread
import requests
def process_list(lst):
last = int(lst[-1]) / 3600 # 最后一个元素单独处理
new_x = lst[0].num + lst[1].num / 60 + last / 3600 # 度分秒转换成度
return '%.13f' % new_x
def gps_adress(lat, lng):
if not lat or not lng:
return "经纬度信息有误"
# 建议自己申请一个
key = "自己申请的apikey"
url = f'https://restapi.amap.com/v3/geocode/regeo?output=json&key={key}&location={lat},{lng}'
response = requests.get(url)
address = ''
if response.status_code == 200:
resp_json = response.json() # 转换成python字典
print(resp_json)
address = resp_json['regeocode']['formatted_address']
# address = []
return address
if __name__ == '__main__':
f = open('C:/Users/Charging/Desktop/OOOOOO.jpg', 'rb')
tags = exifread.process_file(f)
if tags:
# 拍摄时间
i_time = tags.get('Image DateTime')
if i_time:
i_time = i_time.values
# 北纬
lat = tags.get('GPS GPSLatitude')
if lat:
lat = process_list(lat.values)
# 东经
lng = tags.get('GPS GPSLongitude')
if lng:
lng = process_list(lng.values)
print('经纬度信息:', i_time, lat, lng)
adress = gps_adress(lng, lat)
print(f"图片拍摄时间 %s, 拍摄地点:%s" % (i_time, adress))
else:
print("此图像无任何信息")
'''方法2:安装模块,直接输入经纬度,即可获取地址信息'''
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='demo_of_gnss_help')
position = geolocator.reverse('40.689241,-74.044515') # 输入经纬度即可返回地址
print(position.address)