找回密码
 会员注册
查看: 19|回复: 0

Python:完美解决PIL检测图片方向并进行旋转校正,Pillow库

[复制链接]

2万

主题

0

回帖

6万

积分

超级版主

积分
69864
发表于 2024-9-10 07:38:10 | 显示全部楼层 |阅读模式
在用PIL处理图片时,我们经常会遇到图片方向不正确的问题,尤其是从手机或相机中直接获取的图片。PIL(PythonImagingLibrary)库可以帮助我们解决这个问题。【核心思路】:先用getexif()获取图片的方向信息,获取到的exif是个字典,比如{274:6},exif[274]即可得到方向是6,6代表逆时针旋转了90°,然后用rotate()针对性进行旋转即可。首先,确保您已经安装了PIL库。如果没有,您可以使用以下命令进行安装:pipinstallpillow接下来,我们将使用以下代码来实现自动检测和旋转校正:fromPILimportImageimg_path=r"_20240624084451.jpg"image=Image.open(img_path)#显示原始图像image.show()#尝试获取EXIF数据try:exif=image.getexif()exceptAttributeError:#如果图像没有EXIF数据,则不进行旋转pass#检查EXIF数据中是否包含方向信息ifexifisnotNone:#获取图像的方向信息orientation=exif[274]#根据方向旋转图像iforientation==3:image=image.rotate(180,expand=True)eliforientation==6:image=image.rotate(270,expand=True)eliforientation==8:image=image.rotate(90,expand=True)else:pass#显示旋转后的图像image.show()代码解释:首先,我们使用Image.open()函数打开要处理的图片。使用getexif()函数尝试获取图片的EXIF数据。EXIF数据通常包含了关于图片的元信息,例如拍摄时间、拍摄设备、以及图片的方向等。如果图片包含EXIF数据,我们检查其中是否包含方向信息(标签为274)。根据方向信息,我们将图片旋转到正确的方向。其中,方向3表示需要旋转180度,方向6表示需要旋转270度,方向8表示需要旋转90度。最后,我们使用show()函数显示旋转后的图片。        通过以上步骤,我们可以轻松地使用PIL自动检测图片方向并进行旋转校正。这对于自动化图像处理任务来说非常有用。希望这篇文章对您有所帮助!如果您有任何问题或建议,请在评论区留言。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-7 06:43 , Processed in 0.430650 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表