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自动检测图片方向并进行旋转校正。这对于自动化图像处理任务来说非常有用。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容