1. 前言
Python與Pillow的概述
Python是一種廣受程式設計師和資料科學家喜愛的程式語言。憑藉其簡潔的語法和豐富的函式庫,被廣泛應用於各種用途。其中,專門用於影像處理的Pillow(舊稱PIL: Python Imaging Library)是Python中最常用的影像處理函式庫之一。
Pillow支援多種影像格式,如JPEG、PNG、GIF等,並提供縮放、裁剪、濾鏡應用、文字添加等多樣的影像處理功能。它常被用於應用程式與專案中,滿足影像讀取、儲存與編輯的需求。
本文的目標
本文將詳細介紹如何使用Python的Pillow函式庫,從基本的影像處理操作到進階應用,包括影像讀取與儲存、縮放與旋轉、濾鏡應用,以及文字繪製與影像合成等技巧。
閱讀本文後,您將全面掌握Pillow的使用方法,並獲得實際專案中應用這些技巧的知識與技能。
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時會遇到問題。以下列舉常見問題與解決方法:
- Python版本過舊
Pillow支援Python 3.x版本。如果使用較舊版本的Python,可能會導致安裝失敗。可用python --version
確認版本,必要時請更新到最新版本。 - 缺少依賴套件
安裝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)
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')
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,輕鬆完成圖片處理工作。