python读取图片属性信息

python读取图片属性信息从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeableimagefileformat),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。Python中使用ExifRead包读取图片的属性信息,安装方式为:pipinstallexifread使用exifread.process_file获取图像的信息:img_path=r”b…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

        从照片里面获取GPS信息。可交换图像文件常被简称为EXIF(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据,EXIF信息不支持png,webp等图片格式。

python读取图片属性信息

        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内容如下:

python读取图片属性信息

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://javaforall.net/194770.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Javaweb人才招聘系统[通俗易懂]

    Javaweb人才招聘系统[通俗易懂]基于JSP的JSP+MYSQL人才招聘系统hrm系统是一个综合的员工管理系统,系统主页面左边由导航树构成,分为:部门管理、员工管理、招聘管理、培训管理、薪资管理、以及系统设置模块,模块功能主要包含CRUD操作,详情查看等操作。后台管理具体描述如下:网站新闻资讯管理|–添加新闻资讯;|–修改新闻资讯;|–删除新闻资讯个人会员管理|–查看个人会员|–删除个人会员企业会员管理|–查看企业会员|–删除企业会员在线留言管理|–查看在线留言|–删除在线留言系统用户管理|–系统用户的录

    2022年7月8日
    20
  • vue格式化时间戳_日期格式转换

    vue格式化时间戳_日期格式转换第一步:下载安装第三方组件:npminstallmoment–save第二步:在你需要格式化时间的页面引入moment组件importmomentfrom’moment’第三步:然后配合我们element-ui,在元素中加入:formatter<el-table-columnprop=”add_time”label=”创建时间”:formatter=”dateFormat”width=”200px”></el-table-column&gt

    2022年9月25日
    6
  • stm32之继电器驱动[通俗易懂]

    stm32之继电器驱动[通俗易懂]继电器(英文名称:relay)是一种电控制器件,当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的 阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化  的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。虽然很简单,但是可以作为入门知识来学习。第一步:找到单片机控制继电器的引脚,引

    2022年6月24日
    33
  • kubeadm 常用命令

    kubeadm 常用命令kubeadm 概述 Kubeadm 是一个工具 它提供了 kubeadminit 以及 kubeadmjoin 这两个命令作为快速创建 kubernetes 集群的最佳实践 安装官方参考 kuadmin 安装任务 kubeadminit 启动引导一个 Kubernetes 主节点 kubeadmjoin 启动引导一个 Kubernetes 工作节点并且将其加入到集群 kubeadmupgra 更新 Kubernetes 集群到新版本 kubeadmconfi 如果你使用 kube

    2025年9月17日
    3
  • 怎么解决dede首页网址自动加上index.html

    怎么解决dede首页网址自动加上index.html

    2021年10月7日
    45
  • Laravel 5.4: 特殊字段太长报错 420000 字段太长

    Laravel 5.4: 特殊字段太长报错 420000 字段太长

    2021年10月29日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号