CodeGym /Java Adesua /Python SELF TW /畫圖:文字、線條與浮水印

畫圖:文字、線條與浮水印

Python SELF TW
等級 46 , 課堂 0
開放

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")
                
            

在這個範例中,文字浮水印被添加到了圖片的右下角。我們計算了 xy,使浮水印稍微偏移圖片邊界。

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 成為製作信息圖表的有用工具。
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION