1. 在圖片上添加文字
在 Pillow 裡面可以用 ImageDraw
模組來添加文字,它提供了一個方法 text()
,用來在指定座標上顯示文字。
簡單添加文字
from PIL import ImageDraw, ImageFont
# 創建繪圖對象
draw = ImageDraw.Draw(image)
# 在圖片上添加文字
text = "範例文字"
draw.text((50, 50), text, fill="white")
# 保存有文字的圖片
image.save("text_example.jpg")
在這個範例中,文字 "範例文字"
被添加到了座標 (50, 50)
上。參數 fill
定義了文字的顏色,可以用字串("white"
,"black"
)或者 RGB 格式((255, 255, 255)
)。
設定文字字體
默認情況下,Pillow 使用標準字體。如果要選擇其他字體並設置其大小,可以使用 ImageFont.truetype()
。請確保字體文件在你的系統中可用。
# 加載字體
font = ImageFont.truetype("arial.ttf", 36)
# 使用自定義字體添加文字
draw.text((50, 100), text, font=font, fill="yellow")
image.save("text_custom_font_example.jpg")
在這裡,我們使用了字體 arial.ttf
,大小為 36 像素。如果系統中沒有這個字體,你可以下載並指定文件路徑。
2. 添加浮水印
浮水印是一種半透明的文字或圖片覆蓋在照片上,用於防止未經授權的複製。可以用它來添加商標或作者信息。在 Pillow 中,可以創建簡單的文字浮水印。
文字浮水印
# 創建繪圖對象
draw = ImageDraw.Draw(image)
# 浮水印的文字和字體
watermark_text = "© 2023 我的公司"
font = ImageFont.truetype("arial.ttf", 24)
# 確定浮水印的位置
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font)
x = width - text_width - 10
y = height - text_height - 10
# 在右下角添加浮水印
draw.text((x, y), watermark_text, font=font, fill=(255, 255, 255, 128))
image.save("watermarked_example.jpg")
在這個範例中,文字浮水印被添加到了圖片的右下角。我們計算了 x
和 y
,使浮水印稍微偏移圖片邊界。
3. 添加圖形元素
除了文字,Pillow 還允許繪製基本的圖形元素,比如線條、矩形、圓形和橢圓形。這對於創建框架、突出顯示區域和添加幾何圖形很有幫助。
繪製線條
要繪製線條,可以使用 line()
方法,必要時傳入線條的起點和終點的座標。
# 從左上角畫一條線到右下角
draw.line((0, 0, width, height), fill="red", width=5)
image.save("line_example.jpg")
這段程式碼畫了一條紅色的斜線,從圖片的左上角到右下角。
繪製矩形
要繪製矩形,可以使用 rectangle()
方法,分別傳入左上角和右下角的座標。
# 繪製矩形
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
image.save("rectangle_example.jpg")
這裡創建了一個藍色邊框,邊框的厚度為 3 像素。你還可以使用參數 fill
來為矩形填充顏色。
繪製圓形與橢圓形
方法 ellipse()
被用來繪製圓形和橢圓形。如果要畫圓,可以讓寬與高相等。
# 繪製圓形
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
image.save("circle_example.jpg")
此範例創建了一個圓心在座標 (200, 200)
的圓。如果寬與高不同,就會生成橢圓形。
繪製多邊形
要繪製多邊形,可以使用 polygon()
方法,傳入多個頂點的座標。
# 繪製三角形
draw.polygon([(100, 100), (150, 50), (200, 100)], outline="purple", fill="orange")
image.save("polygon_example.jpg")
這段程式碼畫了一個帶有橙色填充和紫色邊框的三角形。你可以根據需要傳入多邊形的頂點來生成任何形狀。
4. 範例
創建包含文字與圖形的組合
我們將結合上述內容,創建一個帶有文字、浮水印和圖形元素的圖片。
from PIL import Image, ImageDraw, ImageFont
# 加載圖片
image = Image.open("example.jpg")
draw = ImageDraw.Draw(image)
# 添加文字
font = ImageFont.truetype("arial.ttf", 36)
draw.text((50, 50), "Demo Text", font=font, fill="yellow")
# 在右下角添加浮水印
watermark_text = "© 2023 我的公司"
font_watermark = ImageFont.truetype("arial.ttf", 24)
width, height = image.size
text_width, text_height = draw.textsize(watermark_text, font=font_watermark)
x = width - text_width - 10
y = height - text_height - 10
draw.text((x, y), watermark_text, font=font_watermark, fill=(255, 255, 255, 128))
# 繪製線條、矩形和圓形
draw.line((0, 0, width, height), fill="red", width=5)
draw.rectangle((50, 50, 200, 200), outline="blue", width=3)
draw.ellipse((150, 150, 250, 250), outline="green", width=4)
# 保存結果
image.save("final_composition_example.jpg")
此範例創建了一個包含文字、浮水印和多個圖形元素(線條、矩形和圓形)的圖片。這樣的組合可以用於演示、博客或創建專業樣式的圖片。
實際應用
- 圖片加註與保護: 浮水印可以保護圖片免於未經授權的使用,文字則可以添加作者或公司的信息。
- 社交媒體圖片準備: 添加文字和圖形可以使圖片更適合發布,並且可以提供額外的信息。
- 信息圖表與數據可視化: 使用像線條和幾何圖形這樣的圖形元素,可以創建簡單的圖表,使 Pillow 成為製作信息圖表的有用工具。
GO TO FULL VERSION