利用PIL.ImageDrw在图片上绘制文本
导入依赖库
from PIL import Image, ImageDraw, ImageFont
import cv2 as cv
import numpy as np
创建一张图片并在图片上绘制文本
# 采用Image函数创建一张大小为200×200,颜色为绿色的RGB图像
image = Image.new("RGB", (200, 200), (0, 255, 0))
# 在原始图像的基础上创建一个ImageDraw.Draw()实例
draw = ImageDraw.Draw(image)
# 创建需要绘制的文本
text = 'Hello World'
# 设置绘图参数
# 文本左上角坐标:(10, 10);text: 创建的文本内容;fill:文本的颜色
draw.text((10, 10), text, fill=(255, 255, 255))
# 显示绘制好的图片
image.show()
# 保存绘制好的图片
image.save('Hello-World.png')
在图片上绘制文本并设置字体
设置字体大小必须采用自定义字体,默认字体无法改变字体大小,Pillow 支持加载 TrueType 和 OpenType 字体,下载TrueType字体地址:
# 选择图片
img = './dog_cat.jpg'
# 读取图片
image = Image.open(img)
# 创建ImageDraw.Draw()实例
draw = ImageDraw.Draw(image)
# 开始在同一张图片上绘制不同字体大小的文本
y = 10 # 设置文本初始纵坐标
text = 'dog ang cat'
for font_size in range(10, 40, 10): # 设置不同的字体大小
# ImageFont.truetype()通过size关键字参数设置字体大小
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')
在图片上绘制文本并设置颜色
image = Image.open(img)
draw = ImageDraw.Draw(image)
# 创建颜色列表
colors = ["green", "blue", "red", "yellow", "purple"]
font = ImageFont.truetype("./Gidole-Regular.ttf", size=20)
text = 'dog and cat'
y = 10
for color in colors:
# 通过关键字参数fill设置字体颜色
draw.text((10, y), text , font=font, fill=color)
y += 35
image.save('set_color.png')
在图片上绘制多行文本
image = Image.open(img)
draw = ImageDraw.Draw(image) # 创建ImageDraw.Draw()对象
texts = ['Dog', 'Cat', 'Dog and Cat'] # 创建需要绘制的文本
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')