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)
上一篇 2025年10月30日 下午12:43
下一篇 2025年10月30日 下午1:15


相关推荐

  • stm32驱动w25q程序(m127m128驱动不支持xp)

    1、W25Q128是华邦公司推出的一款SPI接口的NORFlash芯片,其存储空间为128Mbit,相当于16M字节。W25Q128可以支持SPI的模式0和模式3,也就是CPOL=0/CPHA=0和CPOL=1/CPHA=1这两种模式。2、写入数据时,需要注意以下两个重要问题:①、Flash写入数据时和EEPROM类似,不能跨页写入,一次最多写入一页,W25Q128的一页是256字节。写入数据一旦跨页,必须在…

    2022年4月11日
    131
  • 靠谱的IT人力外包企业有哪些?

    我司通过全面的信息采集,综合化的分析以及系统化咨询,从全国三千余家IT人力外包企业中逐级淘汰,最终筛选出如下15家综合实力强、服务案例优、业务广度大、业内好评度高的企业。

    2022年4月3日
    1.8K
  • Lua脚本教程

    Lua脚本教程Lua 脚本教程一 数据类型 1 常量 变量 2 变量名 字母 数字 下划线 不能以数字开头 3 几种数据类型二 运算符三 初识函数一 数据类型 1 常量 变量 a 10a 2 5a abcd 左边是变量 右边是常量 lua 中注释符是 2 变量名 字母 数字 下划线 不能以数字开头 内置关键字 andbreakdoel

    2026年3月26日
    1
  • rem使用

    rem使用目标 通过使用 rem 使画面内容的高度和宽度自适应 rem 的值 根据设计稿来定 假如设计稿的宽度是 1920 你希望 1rem 100px fontsize 100px 1 设定 html 节点的 fontSize nbsp nbsp 屏幕宽度 设计宽度 1rem 的值 预设定 rem 的值 nbsp 1920 1920 100 100 nbsp 所以 1rem 1920 1920 100 nbsp docu

    2026年3月19日
    3
  • 单片机中0x00和0x01有什么区别

    单片机中0x00和0x01有什么区别0x00 0 0x01 1 比如说 P1 0x00 也就是给 P1 0 P1 7 端口赋低电平 P1 0x01 是 P1 0 为高电平 P1 1 P1 7 为低电平 这是十六进制的表示方法 转换成二进制分别是 0x00 00000000 0x01 00000001 也就是单片机 P 口的八位 P1 7 P1 0 从低位到高位输出的电平

    2026年3月18日
    2
  • mysql bulkupdate_django_bulk_update源码分析

    mysql bulkupdate_django_bulk_update源码分析##django_bulk_update源码分析这个第三方插件的体量几乎只相当于工作时两三天的代码量了,是一个比较容易开始进行源代码阅读的模块,阅读完这个代码对自定义的进行django拓展也是一个相当好的借鉴###django_bulk_update文件结构django_bulk_update在被调用时实际只有四个文件,分别是1.\_\_init__.py2.helper.py3.man…

    2025年7月4日
    7

发表回复

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

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