Python:完美解决PIL检测图片方向并进行旋转校正,Pillow库
在用PIL处理图片时,我们经常会遇到图片方向不正确的问题,尤其是从手机或相机中直接获取的图片。PIL(Python Imaging Library)库可以帮助我们解决这个问题。
【核心思路】:先用getexif()获取图片的方向信息,获取到的exif是个字典,比如{274:6},exif[274]即可得到方向是6,6代表逆时针旋转了90°,然后用rotate()针对性进行旋转即可。
首先,确保您已经安装了PIL库。如果没有,您可以使用以下命令进行安装:
pip install pillow
接下来,我们将使用以下代码来实现自动检测和旋转校正:
from PIL import Image
img_path = r"_20240624084451.jpg"
image = Image.open(img_path)
# 显示原始图像
image.show()
# 尝试获取EXIF数据
try:
exif = image.getexif()
except AttributeError:
# 如果图像没有EXIF数据,则不进行旋转
pass
# 检查EXIF数据中是否包含方向信息
if exif is not None:
# 获取图像的方向信息
orientation= exif[274]
# 根据方向旋转图像
if orientation == 3:
image = image.rotate(180, expand=True)
elif orientation == 6:
image = image.rotate(270, expand=True)
elif orientation == 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自动检测图片方向并进行旋转校正。这对于自动化图像处理任务来说非常有用。
希望这篇文章对您有所帮助!如果您有任何问题或建议,请在评论区留言。
作者:William数据分析