python 通过exifread读取照片信息
更新时间:2020年12月24日 17:09:26 作者:gdjlc
这篇文章主要介绍了python 如何通过exifread读取照片信息,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
通过第三方库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))
以上就是python 通过exifread读取照片信息的详细内容,更多关于python 读取照片信息的资料请关注脚本之家其它相关文章!
相关文章
详解Python中如何添加Selenium WebDriver等待
Selenium Web 驱动程序提供两种类型的等待, 第一个是隐式等待,第二个是显式等待,本文主要为大家介绍了Python如何在Selenium Web驱动程序中添加这两种等待,需要的可以参考下2023-11-11
VSCode设置类似Pycharm控制台运行Python显示中间变量的步骤
这篇文章主要介绍了如何在VSCode中设置调试功能,以实现类似于Pycharm在控制台输出中间变量的功能,文中通过图文介绍的非常详细,需要的朋友可以参考下2025-03-03
TensorFlow的reshape操作 tf.reshape的实现
这篇文章主要介绍了TensorFlow的reshape操作 tf.reshape的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-04-04


最新评论