Python Pillow完全指南|從基本到進階的影像處理全解析

1. 前言

Python與Pillow的概述

Python是一種廣受程式設計師和資料科學家喜愛的程式語言。憑藉其簡潔的語法和豐富的函式庫,被廣泛應用於各種用途。其中,專門用於影像處理的Pillow(舊稱PIL: Python Imaging Library)是Python中最常用的影像處理函式庫之一。

Pillow支援多種影像格式,如JPEG、PNG、GIF等,並提供縮放、裁剪、濾鏡應用、文字添加等多樣的影像處理功能。它常被用於應用程式與專案中,滿足影像讀取、儲存與編輯的需求。

本文的目標

本文將詳細介紹如何使用Python的Pillow函式庫,從基本的影像處理操作到進階應用,包括影像讀取與儲存、縮放與旋轉、濾鏡應用,以及文字繪製與影像合成等技巧。

閱讀本文後,您將全面掌握Pillow的使用方法,並獲得實際專案中應用這些技巧的知識與技能。

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

2. 安裝Pillow的方法

2.1 在Python環境中安裝Pillow

要使用Pillow,首先需要將函式庫安裝到Python環境中。安裝步驟非常簡單,只需在終端機(Windows使用者可用命令提示字元)輸入以下指令即可。

pip install Pillow

pip是一個用於管理Python套件的工具。執行上述指令後,Pillow函式庫將自動安裝。安裝完成後,即可開始進行影像處理。

2.2 測試安裝

安裝Pillow後,可以執行簡單的測試程式碼來確認安裝是否成功。請將以下程式碼寫入Python腳本檔案中並執行。

from PIL import Image

# 測試Pillow功能
img = Image.new('RGB', (100, 100), color = 'red')
img.save('test_image.png')

此程式碼會建立一個100×100像素的紅色影像,並儲存為”test_image.png”。若該檔案成功生成,表示Pillow已正常安裝並可正常使用。

2.3 常見的安裝問題及解決方案

有時安裝Pillow時會遇到問題。以下列舉常見問題與解決方法:

  1. Python版本過舊
    Pillow支援Python 3.x版本。如果使用較舊版本的Python,可能會導致安裝失敗。可用python --version確認版本,必要時請更新到最新版本。
  2. 缺少依賴套件
    安裝Pillow時可能會缺少某些必要的套件。請根據錯誤訊息安裝缺少的套件,或使用以下指令一併安裝所需套件。
pip install Pillow --upgrade

3. 讀取與顯示影像

3.1 如何在Python中讀取影像

讀取影像是使用Pillow進行影像處理的第一步。Pillow提供Image.open()方法來輕鬆讀取影像檔案。

from PIL import Image

# 讀取影像檔案
img = Image.open('sample.jpg')

# 顯示影像資訊
print(img.format)  # 格式 (如: JPEG, PNG)
print(img.size)    # 大小 (寬, 高)
print(img.mode)    # 色彩模式 (如: RGB, L)
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

4. 基本影像處理

4.1 影像縮放

影像縮放是調整解析度的基本操作。在Pillow中,可以使用resize()方法輕鬆調整影像大小。

from PIL import Image

# 讀取影像
img = Image.open('sample.jpg')

# 縮放影像 (寬400px,高300px)
resized_img = img.resize((400, 300))

# 儲存縮放後的影像
resized_img.save('resized_sample.jpg')

5. 圖片格式轉換與儲存

5.1 圖片格式轉換

使用Pillow可以輕鬆地將圖片格式進行轉換。例如,可以將JPEG格式轉換為PNG格式。只需透過save()方法指定新格式,即可完成轉換。

from PIL import Image

# 讀取JPEG圖片
img = Image.open('sample.jpg')

# 轉換為PNG格式並儲存
img.save('converted_image.png', 'PNG')

上述程式碼會將JPEG格式的圖片轉換並儲存為PNG格式檔案。

5.2 圖片儲存方法

Pillow支援多種圖片儲存選項,例如品質設定和最佳化功能。以下範例展示如何使用高品質和最佳化選項儲存JPEG圖片。

from PIL import Image

# 讀取圖片
img = Image.open('sample.jpg')

# 儲存為JPEG格式,設定品質為95並最佳化
img.save('optimized_image.jpg', 'JPEG', quality=95, optimize=True)

此範例將圖片以95%的品質儲存,同時啟用最佳化功能以減少檔案大小。

5.3 漸進式JPEG儲存

漸進式JPEG可以在網頁加載過程中先顯示低解析度的圖片,逐步提高解析度,有助於提升使用者體驗。

from PIL import Image

# 讀取圖片
img = Image.open('sample.jpg')

# 儲存為漸進式JPEG
img.save('progressive_image.jpg', 'JPEG', quality=85, progressive=True)

此範例會將圖片以漸進式JPEG格式儲存,適合網頁使用。

6. 套用濾鏡與特效

6.1 調整亮度與對比度

透過ImageEnhance模組可以輕鬆調整圖片的亮度與對比度。

from PIL import Image, ImageEnhance

# 讀取圖片
img = Image.open('sample.jpg')

# 調整亮度(增加1.5倍)
enhancer = ImageEnhance.Brightness(img)
bright_img = enhancer.enhance(1.5)

# 儲存調整後的圖片
bright_img.save('bright_sample.jpg')

此範例將亮度增加1.5倍。同樣的方式可用於調整對比度。

from PIL import Image, ImageEnhance

# 調整對比度(增加2.0倍)
enhancer = ImageEnhance.Contrast(img)
contrast_img = enhancer.enhance(2.0)

# 儲存調整後的圖片
contrast_img.save('contrast_sample.jpg')

6.2 模糊與銳化濾鏡

使用ImageFilter模組可套用模糊或銳化濾鏡。

from PIL import Image, ImageFilter

# 模糊處理
blurred_img = img.filter(ImageFilter.BLUR)

# 儲存模糊後的圖片
blurred_img.save('blurred_sample.jpg')

上述範例會對圖片進行模糊處理,並儲存結果。

7. 繪製文字與圖形

7.1 繪製文字

透過ImageDraw模組可以在圖片上繪製文字。

from PIL import Image, ImageDraw, ImageFont

# 讀取圖片
img = Image.open('sample.jpg')

# 建立繪圖對象
draw = ImageDraw.Draw(img)

# 繪製文字
draw.text((10, 10), 'Hello, Pillow!', fill=(255, 255, 255))

# 儲存圖片
img.save('text_sample.jpg')
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

8. 影像合成與遮罩

8.1 圖片合成

from PIL import Image

# 背景與疊加圖片
background = Image.open('background.jpg')
overlay = Image.open('overlay.png')

# 合成圖片
background.paste(overlay, (100, 100), overlay)

# 儲存結果
background.save('combined_image.jpg')

9. 總結

本文章詳細介紹了Python的Pillow函式庫及其強大功能。透過學習基本操作如讀取、儲存、縮放與裁剪,到進階應用如合成與濾鏡效果,您已具備處理各種圖片需求的能力。

希望這篇文章能幫助您在實際專案中靈活應用Pillow,輕鬆完成圖片處理工作。

広告