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 读取照片信息的资料请关注脚本之家其它相关文章!

相关文章

  • django使用多个数据库的方法实例

    django使用多个数据库的方法实例

    这篇文章主要给大家介绍了关于django使用多个数据库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python简繁体转换的简单实现步骤

    Python简繁体转换的简单实现步骤

    工作中需要将繁体中文转换成简体中文上网找了些资料,下面这篇文章主要给大家介绍了关于Python实现简繁体转换的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 使用Python的matplotlib库绘制柱状图

    使用Python的matplotlib库绘制柱状图

    这篇文章主要介绍了使用Python的matplotlib库绘制柱状图,Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型地2D图表和一些基本的3D图表,可根据数据集自行定义x,y轴,绘制图形,需要的朋友可以参考下
    2023-07-07
  • python中cv2.projectPoints的用法小结

    python中cv2.projectPoints的用法小结

    这篇文章主要介绍了python中cv2.projectPoints的用法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • python 函数进阶之闭包函数

    python 函数进阶之闭包函数

    这篇文章主要介绍了python 函数进阶之闭包函数,内函数使用了外函数的局部变量,并且外函数把内函数返回出来的过程叫做闭包,里面的内函数是闭包函数,下文相关介绍需要的小伙伴可以参考一下
    2022-04-04
  • Python threading模块中lock与Rlock的使用详细讲解

    Python threading模块中lock与Rlock的使用详细讲解

    python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用。这篇文章主要介绍了Python threading模块中lock与Rlock的使用
    2022-10-10
  • 基于python实现简单日历

    基于python实现简单日历

    这篇文章主要为大家详细介绍了基于python实现简单日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python中logging日志的四个等级和使用

    Python中logging日志的四个等级和使用

    这篇文章主要介绍了Python中logging日志的四个等级和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python实现二叉搜索树BST的方法示例

    Python实现二叉搜索树BST的方法示例

    这篇文章主要介绍了Python实现二叉搜索树BST的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python中非常实用的一些功能和函数分享

    Python中非常实用的一些功能和函数分享

    这篇文章主要介绍了Python中非常实用的一些功能和函数分享,本文讲解了带任意数量参数的函数、使用Glob()查找文件、调试、生成唯一ID等内容,需要的朋友可以参考下
    2015-02-02

最新评论