python 通过exifread读取照片信息

时间:2022-11-03 16:41:22

通过第三方库exifread读取照片信息。
exifread官网:https://pypi.org/project/ExifRead/

一、安装exifread

?
1
pip install exifread

二、读取照片信息,以及根据经纬度通过百度地图API获取位置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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))

以上就是python 通过exifread读取照片信息的详细内容,更多关于python 读取照片信息的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/gdjlc/p/11537776.html