通过第三方库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))

