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

        在用PIL处理图片时,我们经常会遇到图片方向不正确的问题,尤其是从手机或相机中直接获取的图片。PIL(Python Imaging Library)库可以帮助我们解决这个问题。

【核心思路】先用getexif()获取图片的方向信息,获取到的exif是个字典,比如{274:6},exif[274]即可得到方向是6,6代表逆时针旋转了90°,然后用rotate()针对性进行旋转即可

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

首先,确保您已经安装了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()

代码解释:

  1. 首先,我们使用Image.open()函数打开要处理的图片。
  2. 使用getexif()函数尝试获取图片的EXIF数据。EXIF数据通常包含了关于图片的元信息,例如拍摄时间、拍摄设备、以及图片的方向等。
  3. 如果图片包含EXIF数据,我们检查其中是否包含方向信息(标签为274)。
  4. 根据方向信息,我们将图片旋转到正确的方向。其中,方向3表示需要旋转180度,方向6表示需要旋转270度,方向8表示需要旋转90度。
  5. 最后,我们使用show()函数显示旋转后的图片。Python:完美解决PIL检测图片方向并进行旋转校正,Pillow库_第2张图片

        通过以上步骤,我们可以轻松地使用PIL自动检测图片方向并进行旋转校正。这对于自动化图像处理任务来说非常有用。

希望这篇文章对您有所帮助!如果您有任何问题或建议,请在评论区留言。

你可能感兴趣的:(python,开发语言)