打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python读取与保存图片的exif信息

Z-Jeff

于 2021-12-02 17:17:05 发布
2868
收藏 1

文章标签: 图像处理

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Jeff_zjf/article/details/121680347

版权

图片的exif文件格式中保存了很多信息,比如GPS经纬度,高度,焦距等信息。

在图片的属性中可以看到这些信息:

我们可以使用python来进行exif数据的读取和保存。

1. 首先安装piexif

pip3 install piexif

2.exif数据读取代码

import piexif
from PIL import Image

# Read Image
fname = './1.JPG'
img = Image.open(fname)
exif_dict = piexif.load(img.info['exif'])

# Read exif data
longitude = exif_dict['GPS'][piexif.GPSIFD.GPSLongitude]
latitude = exif_dict['GPS'][piexif.GPSIFD.GPSLatitude]
altitude = exif_dict['GPS'][piexif.GPSIFD.GPSAltitude]
focal_length = exif_dict['Exif'][piexif.ExifIFD.FocalLength]
print('longitude:', longitude)
print('latitude:', latitude)
print('altitude:', altitude)
print('focal length:', focal_length)

数据输出如下:

longitude: ((117, 1), (17, 1), (532029, 10000))
latitude: ((31, 1), (43, 1), (299847, 10000))
altitude: (44783, 1000)
focal length: (880, 100)

 PS:exif数据用的是分数格式和度分秒格式。

比如 ((117, 1), (17, 1), (532029, 10000))的含义是117/1度17/1分532029/10000秒,即117°17′53.2029″

(44783, 1000)的含义是44783/1000,即44.783

3.exif数据修改与保存代码

# Modify exif data
exif_dict['GPS'][piexif.GPSIFD.GPSLongitude] = ((180, 1), (17, 1), (532029, 10000))

# Save image with modified exif data
exif_bytes = piexif.dump(exif_dict)
img.save('1_copy.JPG', exif=exif_bytes)

我在项目中遇到的一个需求:

无人机航拍图像分辨率太大,需要对图像进行缩放,同时保留GPS数据(因为后续算法需要GPS数据)。

如果用opencv来resize图片再imwrite的话,会丢失GPS信息,不可行。可用如下的代码:

import piexif
from PIL import Image

# Read Image
fname = './DJI_0001.JPG'
img = Image.open(fname)
exif_dict = piexif.load(img.info['exif'])

# Resize image
resize_img = img.resize((1920, 1080), Image.ANTIALIAS) 

# Save resized image with original exif data
exif_bytes = piexif.dump(exif_dict)
resize_img.save('1_copy.JPG', exif=exif_bytes)

参考:How to modify EXIF data in python - Stack Overflow

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
女朋友背着我,用 Python 偷偷隐藏了她的行踪
图像元数据(Metadata)
用ChatGPT进行CV开发的应用尝试
face++ API接口调用
秋日龙脊
收藏一些有用的JS代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服