当前位置:首页 > 编程知识 > 正文

Python图像上添加文字用法介绍

Python是一门高级编程语言,它提供了丰富的库和模块,其中包含了对图像处理方面的支持。在对图像进行处理的过程中,添加文字是必不可少的一个步骤。那么,在Python中如何对图像上添加文字呢?本文将从多个方面进行详细的阐述。

一、使用Pillow库添加文字

Pillow是Python图像处理库中最常用的库之一,它是Python Imaging Library (PIL)的一个分支。使用Pillow库添加文字非常简单,只需要按照以下步骤进行操作:

from PIL import Image, ImageDraw, ImageFont

#加载图像
image = Image.open("image.jpg")

#创建绘图对象
draw = ImageDraw.Draw(image)

#设置字体样式
font = ImageFont.truetype("arial.ttf", 36)

#添加文字
draw.text((100, 100), "Hello World", font=font, fill=(255, 0, 0))

#保存图像
image.save("image_with_text.jpg")

以上代码首先将图像加载进来,然后创建一个绘图对象,设置字体样式,最后在指定位置添加文字并保存图像。其中,参数fill用于设置字体颜色,这里的(255, 0, 0)代表红色。

二、添加不同颜色和大小的文字

有时候,我们需要在同一张图片上添加不同颜色和大小的文字,这时可以使用Pillow库的multiline_text方法实现。下面是一个例子:

from PIL import Image, ImageDraw, ImageFont

#加载图像
image = Image.open("image.jpg")

#创建绘图对象
draw = ImageDraw.Draw(image)

#设置字体样式
font = ImageFont.truetype("arial.ttf", 36)

#添加文字
text1 = "Hello World!"
text2 = "It's a beautiful day!"
text3 = "Python is amazing!"

draw.multiline_text((100, 100), text1, font=font, fill=(255,0,0))
draw.multiline_text((100, 160), text2, font=font, fill=(0, 255, 0), spacing=14)
draw.multiline_text((100, 220), text3, font=font, fill=(0, 0, 255), align='right')

#保存图像
image.save("image_with_text.jpg")

以上代码添加了三段不同颜色和大小的文字,其中使用了multiline_text方法,并且通过传递不同的参数实现不同的效果。比如,参数spacing用于设置行间距,参数align用于设置文字对齐方式。

三、在图像上添加水印

在对图片进行编辑和处理的过程中,添加水印是一个非常实用的功能。下面的例子演示了如何在图像的右下角添加一个透明度为50的水印。

from PIL import Image, ImageDraw, ImageFont

#加载图像
image = Image.open("image.jpg")

#创建绘图对象
draw = ImageDraw.Draw(image)

#设置字体样式和大小
font = ImageFont.truetype("arial.ttf", 36)

#水印文字
text = "Watermark"

#添加水印
textwidth, textheight = draw.textsize(text, font)
width, height = image.size
x = width - textwidth - 10
y = height - textheight - 10

draw.text((x, y), text, font=font, fill=(255, 255, 255, 128))

#保存图像
image.save("image_with_watermark.jpg")

在以上代码中,我们首先加载了图像,然后创建一个绘图对象。接下来,我们设置了字体样式和大小,并且指定了水印文字。水印文字的大小和位置是通过计算得到的,最后将水印添加到图像上并保存。

四、使用OpenCV库添加文字

除了Pillow库外,Python还有OpenCV库用于图像处理。下面是使用OpenCV库添加文字的例子:

import cv2

#加载图像
image = cv2.imread("image.jpg")

#设置字体样式和大小
font = cv2.FONT_HERSHEY_SIMPLEX
fontscale = 1
thickness = 2
color = (255, 0, 0)

#添加文字
text = "Hello World!"
textsize = cv2.getTextSize(text, font, fontscale, thickness)[0]
text_x = int((image.shape[1] - textsize[0]) / 2)
text_y = int((image.shape[0] + textsize[1]) / 2)

cv2.putText(image, text, (text_x, text_y), font, fontscale, color, thickness)

#保存图像
cv2.imwrite("image_with_text.jpg", image)

以上代码中,我们首先加载图片,然后设置字体样式和大小。在添加文字时,我们使用了getTextSize方法获取文本大小,并且通过计算得到文本位置。最后将文本添加到图像上并保存。

五、结语

本文从使用Pillow库添加文字、添加不同颜色和大小的文字、在图像上添加水印以及使用OpenCV库添加文字等多个方面进行了详细的阐述。希望本文可以帮助读者更好地掌握在Python中对图像添加文字的技巧。