Python PIL 畫圖用法介紹

NK4AD 數碼 2

在本篇文章中,我們將從多個方面對Python PIL畫圖進行詳細的闡述,包括基礎繪圖、圖像處理、文字處理等方面,幫助大家全面了解如何運用Python PIL來實現各種畫圖需求。

在Python PIL中,我們可以使用ImageDraw模塊來實現基礎的圖形繪製,比如直線、矩形、圓等。

下面是一個簡單實例,繪製直線和矩形:

from PIL import Image, ImageDraw

# 創建一個空白圖像
img = Image.new('RGB', (500, 500), 'white')

# 創建畫筆
draw = ImageDraw.Draw(img)

# 繪製直線
draw.line((0, 0, 500, 500), fill='red', width=5)

# 繪製矩形
draw.rectangle((100, 100, 400, 400), fill='blue', outline='black', width=2)

# 顯示圖像
img.show()

在上面的代碼中,我們使用Image.new()創建了一個500×500的空白圖像,並創建了一個畫筆對象ImageDraw.Draw。然後使用draw.line()方法畫了一條從左上角到右下角的紅線,使用draw.rectangle()方法畫了一個藍色內填充、黑色邊框的矩形。最後使用img.show()方法顯示圖像。

除了直線和矩形,ImageDraw模塊還支持繪製多邊形、圓、橢圓等基本圖形。這些方法的使用方式類似,可以根據需要自行查閱官方文檔。

除了簡單的繪圖功能,Python PIL還有強大的圖像處理能力,可以對圖像進行縮放、裁剪、旋轉、濾鏡效果等處理。

下面是一個實例,對一張圖片進行縮放、旋轉、裁剪操作:

from PIL import Image

# 打開一張圖片
img = Image.open('test.jpg')

# 縮放
img = img.resize((400, 400))

# 旋轉
img = img.rotate(45)

# 裁剪
img = img.crop((100, 100, 300, 300))

# 顯示圖像
img.show()

在上面的代碼中,我們使用Image.open()打開了一張名為test.jpg的圖片。然後使用img.resize()方法將圖片縮放到了400×400。接着使用img.rotate()將圖片逆時針旋轉45度。最後使用img.crop()將圖片裁剪成從左上角開始100×100的正方形,大小為200×200。最後使用img.show()方法顯示圖像。

除了這些基礎的圖像處理操作,Python PIL還支持模糊、銳化、邊緣檢測等濾鏡效果,可以通過filter()方法實現。這些方法的使用方式類似,可以根據需要自行查閱官方文檔。

在Python PIL中還有一個ImageFont模塊,可以實現對圖像中的文字進行處理。

下面是一個實例,將文字添加到圖像中:

from PIL import Image, ImageDraw, ImageFont

# 創建一個空白圖像
img = Image.new('RGB', (500, 500), 'white')

# 創建一個畫筆
draw = ImageDraw.Draw(img)

# 定義字體和文字內容
font = ImageFont.truetype('arial.ttf', 36)
text = 'Hello World!'

# 計算文字的大小
text_size = draw.textsize(text, font=font)

# 將文字繪製在圖像中心位置
draw.text((250-text_size[0]/2, 250-text_size[1]/2), text, fill='black', font=font)

# 顯示圖像
img.show()

在上面的代碼中,我們使用Image.new()創建了一個500×500的空白圖像,並創建了一個畫筆對象ImageDraw.Draw。然後使用ImageFont.truetype()方法定義了字體和字號,使用draw.textsize()方法計算了文字大小。最後使用draw.text()將文字繪製在圖像中心位置,設置文字顏色為黑色。最後使用img.show()方法顯示圖像。

除了基本的文字繪製,ImageFont模塊還支持文字旋轉、陰影、效果等操作,可以根據需要自行查閱官方文檔。

Python PIL是一款強大的圖像處理庫,不僅支持基本的繪圖、圖像處理等操作,還可實現文字處理等功能。通過本篇文章的介紹,相信大家已經初步了解了Python PIL的基本用法和功能,歡迎大家在實際應用中多加嘗試和使用。

回復

共1條回復 我來回復
  • 暫無回復內容