python 通过exifread读取照片信息


Posted in Python onDecember 24, 2020

通过第三方库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 相关文章推荐
Python 代码性能优化技巧分享
Aug 07 Python
Python中的Classes和Metaclasses详解
Apr 02 Python
Python脚本实现格式化css文件
Apr 08 Python
python实现汉诺塔算法
Mar 01 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
python挖矿算力测试程序详解
Jul 03 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
python 实现二维列表转置
Dec 02 Python
Pyqt5自适应布局实例
Dec 13 Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 Python
jupyter notebook 添加kernel permission denied的操作
Apr 21 Python
Python 解决空列表.append() 输出为None的问题
May 23 Python
python 如何上传包到pypi
Dec 24 #Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 #Python
python xlsxwriter模块的使用
Dec 24 #Python
想学画画?python满足你!
Dec 24 #Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 #Python
用python获取txt文件中关键字的数量
Dec 24 #Python
举例讲解Python装饰器
Dec 24 #Python
You might like
php调整gif动画图片尺寸示例代码分享
2013/12/05 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
php处理带有中文URL的方法
2016/07/11 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
range 标准化之获取
2011/08/28 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
Bootstrap模态框插件使用详解
2017/05/11 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
vue实现文件上传功能
2018/08/13 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
2019/09/26 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python中日志logging模块的性能及多进程详解
2017/07/18 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
基于python requests库中的代理实例讲解
2018/05/07 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Django中URL的参数传递的实现
2019/08/04 Python
python如何将图片转换素描画
2020/09/08 Python
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
护理工作感言
2014/01/16 职场文书
教师三严三实学习心得体会
2014/10/11 职场文书
公司财务部岗位职责
2015/04/14 职场文书
2016年端午节寄语
2015/12/04 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
Mysql binlog日志文件过大的解决
2021/10/05 MySQL