如何利用python读取图片属性信息
作者:alex1801 发布时间:2023-12-24 00:57:51
标签:python,读取,图片,属性,信息
从照片里面获取GPS信息。可交换图像文件常被简称为EXIF
(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。
Python中使用ExifRead包读取图片的属性信息,安装方式为:
pip install exifread
使用exifread.process_file获取图像的信息:
img_path = r"bei_012744.jpg"
f = open(img_path, 'rb')
contents = exifread.process_file(f)
f.close()
单步调试,contents内容如下:
GPS坐标转换:
通过exifread获取的经纬度信息格式通常是下面这样的:纬度 [28, 56, 109097/5000] 经度 [112, 38, 436353/10000],转换公式如下:
度 = 度 + 分/60 + 秒/3600
[28, 56, 109097/5000] = 28 + 56 / 60 + 109097/5000 / 3600 = 28.93939427777778
因此坐标转换代码如下:
def convert_gps(coord_arr):
arr = str(coord_arr).replace('[', '').replace(']', '').split(', ')
d = float(arr[0])
m = float(arr[1])
s = float(arr[2].split('/')[0]) / float(arr[2].split('/')[1])
return float(d) + (float(m) / 60) + (float(s) / 3600)
完整代码:
import exifread
img_path = r"bei_012744.jpg"
f = open(img_path, 'rb')
contents = exifread.process_file(f)
f.close()
lon = contents['GPS GPSLongitude'].printable # 经度
lon = convert_gps(lon)
lat = contents['GPS GPSLatitude'].printable # 纬度
lat = convert_gps(lat)
altitude = contents['GPS GPSAltitude'].printable # 相对高度
altitude = float(altitude.split('/')[0]) / float(altitude.split('/')[1])
print("GPSLongitude:", lon, "\nGPSLatitude:", lat, "\naltitude:", altitude)
结果:
GPSLongitude: 112.64545425
GPSLatitude: 28.93939427777778
altitude: 58.009
来源:https://blog.csdn.net/weixin_34910922/article/details/123340837


猜你喜欢
- 假设三节点MGR某个节点异常,需要重新把这个节点加入到MGR集群中,具体操作过程如下:贡献者端执行(192.168.1.11)DROP US
- 这篇文章主要介绍了python爬虫 批量下载zabbix文档代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 前言在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下。博
- 前言:有读者可能会一脸懵?啥是索引潜水?你给起的名字的吗?有没有索引蛙泳?这个名字还真不是我起的,今天要讲的知识点就叫索引潜水(Index
- 注:对多选按钮操作。 1:批量全选添加、批量移除。 2:行单选添加、移除。 3:分页之后(全选或不选)状态标识依然存在 /* *****&g
- 一、运行时恐慌panicpanic是一种在运行时抛出来的异常。比如"index of range"。panic的详情:p
- Pyppeteer简介介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工
- 环境: Python3 + windows。开发工具:Anaconda + Jupyter / VS Code。学习效果:1.认识爬虫 /
- (本章节主要是一些python的基础语法,具体内容不够详细,以pycharm下调试产生的部分代码为主)(python语法的详细内容请参考官方
- Bootstrap是一款目前非常流行的前端框架,简单的说,就是html,css,javascript的工具集,我们可以用bootstrap搭
- 在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往
- 简单开始1.安装node。https://nodejs.org/en/ 2.安装ws模块ws:是nodejs的一个We
- Python中的变量作用域一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。全局变量所有作用域都可用,局部变量只能在本
- 本文实例分析了JavaScript事件委托技术。分享给大家供大家参考。具体分析如下:如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定
- 1. 准备工作后台服务接口,对书本的增删改查操作2. 弹出窗口进入ElementUi官网, 找到Dialog对话框,可以参考&ldq
- 在上一篇文章里已经写过如何安装python和在eclipse中配置python插件,这篇就不多说了,开始入门。1.先新建一个python工程
- 连续看到几个和 Oracle 优化器隐含参数 _sort_elimination_cost_ratio 相关的优化案例(Refer Refe
- Keras运行迭代一定代数以后,速度越来越慢,经检查是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。
- 1.简介:facenet 是基于 TensorFlow 的人脸识别开源库,有兴趣的同学可以扒扒源代码:https://github.com/
- 前言MySQL慢查询日志是我们在日常工作中经常会遇到的一个功能,MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的