通过第三方库exifread读取照片信息。
exifread官网:https://pypi.org/project/ExifRead/
一、安装exifread
pip install exifread
二、读取照片信息,以及根据经纬度通过百度地图API获取位置
import exifread import json import urllib.request # Open image file for reading (binary mode) f = open( ' 001.jpg ' , ' rb ' ) # Return Exif tags tags = exifread.process_file(f) ''' #打印所有照片信息 for tag in tags.keys(): print("Key: {}, value {}".format(tag, tags[tag])) ''' # 打印照片其中一些信息 print ( ' 拍摄时间: ' , tags[ ' EXIF DateTimeOriginal ' ]) print ( ' 照相机制造商: ' , tags[ ' Image Make ' ]) print ( ' 照相机型号: ' , tags[ ' Image Model ' ]) print ( ' 照片尺寸: ' , tags[ ' EXIF ExifImageWidth ' ], tags[ ' EXIF ExifImageLength ' ]) # 获取经度或纬度 def getLatOrLng(refKey, tudeKey): if refKey not in tags: return None ref = tags[refKey].printable LatOrLng =tags[tudeKey].printable[1:-1].replace( " " , "" ).replace( " / " , " , " ).split( " , " ) LatOrLng =float(LatOrLng[0])+float(LatOrLng[1])/60+float(LatOrLng[2])/float(LatOrLng[3])/3600 if refKey == ' GPS GPSLatitudeRef ' and tags[refKey].printable != " N " : LatOrLng =LatOrLng*(-1 ) if refKey == ' GPS GPSLongitudeRef ' and tags[refKey].printable != " E " : LatOrLng =LatOrLng*(-1 ) return LatOrLng # 调用百度地图API通过经纬度获取位置 def getlocation(lat,lng): url = ' http://api.map.baidu.com/geocoder/v2/?location= ' + lat + ' , ' + lng + ' &output=json&pois=1&ak=申请的百度地图KEY ' req = urllib.request.urlopen(url) res = req.read().decode( " utf-8 " ) str = json.loads(res) # print(str) jsonResult = str.get( ' result ' ) formatted_address = jsonResult.get( ' formatted_address ' ) return formatted_address lat = getLatOrLng( ' GPS GPSLatitudeRef ' , ' GPS GPSLatitude ' ) # 纬度 lng = getLatOrLng( ' GPS GPSLongitudeRef ' , ' GPS GPSLongitude ' ) # 经度 print ( ' 纬度:{} 经度:{} ' .format(lat, lng)) location = getlocation(str(lat), str(lng)) print ( ' 位置:{} ' .format(location))