java 去除图片exif里面的方向信息_读取jpg的exif信息

最近处理一些图片数据,遇到了 exif读取的问题。

很多同事推荐使用 PIL读取,都从网上拷贝一段不明所以的代码,搞得不清不楚。

鉴于我的 软件工程的思路,我将代码重新整理了一下,便于使用。

首先 PIL是有 ExifTags 模块的,不过里面只有2个字典:

0b08db7aa6f448c39ee982ae3e69407d.png

主要作用是一堆 int:str 名字映射

明显解决不了 读取数据问题。

从一些 demo中得知,需要用 Image 对象的 _getexif函数获取 解析的结构体,代码如下

 imgf = r'C:workspacedataSolarPanelest.jpg' from PIL import Image from pprint import pprint with Image.open(imgf) as im: pprint(im._getexif())

得到一堆数据:

08c9e47e1a226a456007e7bcb9729962.png

从而得知,需要使用 ExifTags对 int值进行解释。

于是改造代码如下:

def sphere_to_decimal(degrees, minutes, seconds): '''将 (度,分,秒)经纬度转换为小数 ''' return degrees + minutes/60.0 + seconds/3600.0def _get_exif(im):'''提取 exif信息'''data = {}if not hasattr(im, '_getexif'):return dataexifinfo = im._getexif() #获取 exif信息if not exifinfo: #判空return data#遍历for tag, value in exifinfo.items():tag = TAGS.get(tag, tag)if tag == 'GPSInfo':#遍历 gps信息,进行 特殊处理gps = {}for _t, _v in value.items():_t = GPSTAGS.get(_t, _t)if _t in ["GPSLatitude
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值