详解如何在Python中用pillow在图片上添加文字

  • Post category:Python

要在Python中使用pillow在图片上添加文字,可以按照以下步骤进行:

第一步:导入PIL库

在Python中使用pillow需要先导入相应的库,可以使用以下代码:

from PIL import Image, ImageDraw, ImageFont

第二步:打开图片并创建图片对象

使用Pillow中的Image类可以打开图片,例如:

img = Image.open('example.jpg')

第三步:创建字体对象

使用Pillow中的ImageFont类创建字体对象。通常情况下,我们需要设置字体的样式、大小等参数。例如:

font = ImageFont.truetype('arial.ttf', size=36)

这里使用的是arial字体,大小为36。

第四步:创建画笔对象

使用Pillow中的ImageDraw类创建画笔对象,在画笔对象中可以设置文本的颜色、填充色等。例如:

draw = ImageDraw.Draw(img)

第五步:使用画笔对象添加文本

使用刚刚创建的画笔对象,在图片上添加文本。一般情况下,需要设置文本的位置、文本内容、字体等参数。例如:

text = "Hello, World!"
position = (100, 100)
color = (255, 0, 0) # 文本颜色为红色
draw.text(position, text, font=font, fill=color)

第六步:保存修改后的图片

在添加文本之后,需要使用Image类中的save方法来保存修改后的图片。例如:

img.save('example_with_text.jpg')

示例一

接下来,我们来看一个完整的示例。假设我们有一张图片example.jpg,我们需要在该图片的右上角添加一段文本。代码如下:

from PIL import Image, ImageDraw, ImageFont

# 打开图片并创建图片对象
img = Image.open('example.jpg')

# 创建字体对象
font = ImageFont.truetype('arial.ttf', size=36)

# 创建画笔对象
draw = ImageDraw.Draw(img)

# 添加文本
text = "Hello, World!"
position = (img.width - font.getsize(text)[0], 0)
color = (255, 0, 0) # 文本颜色为红色
draw.text(position, text, font=font, fill=color)

# 保存修改后的图片
img.save('example_with_text.jpg')

示例二

下面再来一个示例。假设我们需要在图片中央添加一段文本,并设置文本的颜色、字体、背景色等。代码如下:

from PIL import Image, ImageDraw, ImageFont

# 打开图片并创建图片对象
img = Image.open('example.jpg')

# 创建字体对象
font = ImageFont.truetype('arial.ttf', size=72)

# 创建画笔对象
draw = ImageDraw.Draw(img)

# 添加文本
text = "Pillow"
position = (img.width // 2, img.height // 2)
color = (255, 0, 0) # 文本颜色为红色
bg_color = (255, 255, 255) # 背景色为白色
text_size = draw.textsize(text, font=font)
text_pos = (position[0] - text_size[0] // 2, position[1] - text_size[1] // 2)
draw.rectangle([text_pos, (text_pos[0] + text_size[0], text_pos[1] + text_size[1])], fill=bg_color)
draw.text(text_pos, text, font=font, fill=color, align='center')

# 保存修改后的图片
img.save('example_with_text.jpg')

这个示例中,我们选择了白色作为文本背景色,并使用了align参数来设置文本对齐方式。