Home >> Blog >> Python PIL 影像處理工具

Python PIL 影像處理工具

Python Imaging Library(PIL 的擴展)是 Python 語言事實上的圖像處理包。它結合了輕量級的圖像處理工具,有助於在處理SEO優化時遇到的影像編輯、創建和保存圖像。對 Python Imaging Library 的支持於 2011 年停止,但一個名為pillow的項目分叉了原始 PIL 項目並為其添加了 Python3.x 支持。Pillow 被宣佈為 PIL 的替代品,以備將來使用。Pillow 支持大量的圖像文件格式,包括 BMP、PNG、JPEG 和 TIFF。該庫鼓勵通過創建新的文件解碼器來添加對庫中更新格式的支持。

這個模塊沒有預裝 Python。因此,要安裝它,請在命令行中執行以下命令:

點安裝pillow

注意:一些 Linux 發行版傾向於預裝 Python 和 PIL。

從pillow開始

1. 使用 open() 打開圖像: PIL.Image.Image 類表示圖像對象。此類提供用於打開圖像的 open() 方法。

示例:假設圖像是:

from PIL import Image


# test.png => location_of_image
img = Image.open(r"test.png")

注意:僅當圖像與 Python 程序位於同一目錄中時,圖像的位置才應是相對的,否則應提供圖像的絕對(完整)路徑。

2.使用show()顯示圖像:該方法用於顯示圖像。為了顯示圖像,Pillow 首先將圖像轉換為 .png 格式(在 Windows 操作系統上)並將其存儲在臨時緩衝區中,然後再顯示它。因此,由於將圖像格式轉換為 .png,原始圖像文件格式的某些屬性可能會丟失(如動畫)。因此,建議僅將此方法用於測試目的。from PIL import Image

from PIL import Image


img = Image.open(r"test.png")
img.show()

Python:pillow(PIL 的一個分支)

3.獲取打開的圖片信息

A) 獲取圖像的模式(顏色模式):圖像的模式屬性告訴了圖像中像素的類型和深度。1 位像素的範圍為 0-1,8 位像素的範圍為 0-255。該模塊提供了不同的模式。其中很少有:

例子:

from PIL import Image


img = Image.open(r"test.png")
print(img.mode)

輸出:

RGBA

注意:請參閱文檔以了解這些模式。

B) 獲取圖像的大小:該屬性提供圖像的大小。它返回一個包含寬度和高度的元組。例子:

from PIL import Image


img = Image.open(r"test.png")
print(img.size)

輸出:

(180, 263)

C) 獲取圖片格式:該方法返回圖片文件的格式。


from PIL import Image


img = Image.open(r"test.png")
print(img.format)T\

輸出:

PNG

4. 使用 rotate() 旋轉圖像:旋轉圖像後,圖像中沒有像素值的部分用黑色填充(對於非 alpha 圖像)和完全透明的像素(對於支持透明度的圖像)

例子:

from PIL import Image


angle = 40
img = Image.open(r"test.png")
r_img = img.rotate(angle)

輸出:

Python:pillow(PIL 的一個分支)

5. 使用 resize() 調整圖像大小:在調整大小的過程中發生插值,因此無論是放大(調整到比原始更高的尺寸)還是縮小(調整到比原始更低的圖像),圖像的質量都會發生變化. 因此 resize() 應該謹慎使用,同時為重採樣參數提供合適的值。

例子:

from PIL import Image


size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size)

r_img.show()

輸出:

Python:pillow(PIL 的一個分支)

6. 使用 save() 保存圖像:使用 save() 方法時,Destination_path 還必須具有圖像文件名和擴展名。如果在格式參數中指定了擴展名,則可以在 Destination_path 中省略擴展名。

from PIL import Image


size = (40, 40)
img = Image.open(r"test.png")
r_img = img.resize(size, resample = Image.BILINEAR)

# resized_test.png => Destination_path
r_img.save("resized_test.png")

# Opening the new image
img = Image.open(r"resized_test.png")
print(img.size)

輸出:

(40, 40)

image

the

matson

to

pil

pil

pil

pil

pil

image from pil

import image from

image rotate

exif

this

method

paste

none

pacific international lines

images

will