利用PIL.ImageDrw在圖片上繪制文本
導入依賴庫
from PIL import Image, ImageDraw, ImageFont
import cv2 as cv
import numpy as np
創(chuàng)建一張圖片并在圖片上繪制文本
# 采用Image函數(shù)創(chuàng)建一張大小為200×200,顏色為綠色的RGB圖像
image = Image.new("RGB", (200, 200), (0, 255, 0))
# 在原始圖像的基礎(chǔ)上創(chuàng)建一個ImageDraw.Draw()實例
draw = ImageDraw.Draw(image)
# 創(chuàng)建需要繪制的文本
text = 'Hello World'
# 設(shè)置繪圖參數(shù)
# 文本左上角坐標:(10, 10);text: 創(chuàng)建的文本內(nèi)容;fill:文本的顏色
draw.text((10, 10), text, fill=(255, 255, 255))
# 顯示繪制好的圖片
image.show()
# 保存繪制好的圖片
image.save('Hello-World.png')
在圖片上繪制文本并設(shè)置字體
設(shè)置字體大小必須采用自定義字體,默認字體無法改變字體大小,Pillow 支持加載 TrueType 和 OpenType 字體,下載TrueType字體地址:
# 選擇圖片
img = './dog_cat.jpg'
# 讀取圖片
image = Image.open(img)
# 創(chuàng)建ImageDraw.Draw()實例
draw = ImageDraw.Draw(image)
# 開始在同一張圖片上繪制不同字體大小的文本
y = 10 ?# 設(shè)置文本初始縱坐標
text = 'dog ang cat'
for font_size in range(10, 40, 10): ?# 設(shè)置不同的字體大小
? ? # ImageFont.truetype()通過size關(guān)鍵字參數(shù)設(shè)置字體大小
? ? font = ImageFont.truetype("./Gidole-Regular.ttf", size=font_size)
? ? draw.text((10, y), '{}: font_size={}'.format(text, font_size), font=font)?
? ? y += 30
image.save('./set_fontsize.png')
在圖片上繪制文本并設(shè)置顏色
image = Image.open(img)
draw = ImageDraw.Draw(image)
# 創(chuàng)建顏色列表
colors = ["green", "blue", "red", "yellow", "purple"]
font = ImageFont.truetype("./Gidole-Regular.ttf", size=20)
text = 'dog and cat'
y = 10
for color in colors:
? ? # 通過關(guān)鍵字參數(shù)fill設(shè)置字體顏色
? ? draw.text((10, y), text , font=font, fill=color)
? ? y += 35
image.save('set_color.png')
在圖片上繪制多行文本
image = Image.open(img)
draw = ImageDraw.Draw(image) ?# 創(chuàng)建ImageDraw.Draw()對象
texts = ['Dog', 'Cat', 'Dog and Cat'] ?# 創(chuàng)建需要繪制的文本
font = ImageFont.truetype('./Gidole-Regular.ttf', size=20)
coord = 10
for text in texts: ?# 多行繪制文本
? ? draw.text((10, coord), text, fill=(255, 0, 0), font=font) ?# 繪制第一個文本,文本左上角坐標為(10, 10)
? ? coord += 20 ?# 進行多行繪制,y方向間隔20個像素
image.save('self_mutilline1.png')
?