Python 水平翻轉、垂直翻轉圖片

本篇 ShengYu 將介紹如何使用 Python 來水平翻轉、垂直翻轉圖片,在做影像處理時常常會需要用水平翻轉、垂直翻轉圖片的功能,這邊我們使用 python 的 PIL 模組來作圖片的水平翻轉、垂直翻轉。

安裝 PIL

基本上新版本的 Python 應該都有內建 PIL,如果還未安裝 PIL 的話請參考這篇

水平翻轉範例

以下範例是 ShengYu 將 lena.jpg 這張圖片透過 transpose() 函式並帶入參數 Image.FLIP_LEFT_RIGHT 來作水平左右翻轉,最後顯示並且存檔。

另外也可使用 ImageOps.mirror() 也有同樣效果。

flip-image-horizontal.py
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from PIL import Image

img = Image.open("lena.jpg")
img.show()

new_img = img.transpose(Image.FLIP_LEFT_RIGHT)
new_img.save("lena-horizontal.jpg")
new_img.show()

結果如下圖所示:
左邊為原圖,右邊為水平翻轉後的圖。

垂直翻轉範例

以下範例是 ShengYu 將 lena.jpg 這張圖片透過 transpose() 函式並帶入參數 Image.FLIP_TOP_BOTTOM 來作垂直上下翻轉,最後顯示並且存檔。

transpose() 參數帶入 Image.ROTATE_180 參數也是一樣垂直上下翻轉的效果。
另外也可以使用 ImageOps.flip(),效果也是一樣的。

flip-image-vertical.py
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from PIL import Image

img = Image.open("lena.jpg")
img.show()

new_img = img.transpose(Image.FLIP_TOP_BOTTOM)
new_img.save("lena-vertical.jpg")
new_img.show()

結果如下圖所示:
左邊為原圖,右邊為垂直翻轉後的圖。

常用參數說明

這邊列出 transpose() 函式常用的參數,
Image.FLIP_LEFT_RIGHT︰水平左右翻轉
Image.FLIP_TOP_BOTTOM︰垂直上下翻轉
Image.ROTATE_90︰逆時針旋轉90度
Image.ROTATE_180︰逆時針旋轉180度
Image.ROTATE_270︰逆時針旋轉270度

Image.transpose 參數的詳細細節請參考這裡
ImageOps.mirror 參數的詳細細節請參考這裡
ImageOps.flip 參數的詳細細節請參考這裡

相關主題
Python 旋轉圖片 rotate
Python 縮放圖片 resize
Python 裁切裁剪圖片 crop
Python 圖片模糊化 blur
Python 在圖片上繪製文字