千家信息网

怎么用python读取图片属性信息

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,今天小编给大家分享一下怎么用python读取图片属性信息的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2025年02月01日怎么用python读取图片属性信息

今天小编给大家分享一下怎么用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

以上就是"怎么用python读取图片属性信息"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0