Python Pillow - 在图像上写入文本



向图像添加文本是一项常见的图像处理任务,它涉及将文本叠加到图像上。这可以用于各种目的,例如为图像添加标题、标签、水印或注释。在向图像添加文本时,我们通常可以指定文本内容、字体、大小、颜色和位置。

在 Pillow (PIL) 中,我们可以使用 **ImageDraw** 模块中的 **text()** 方法向图像添加文本。

text() 方法

**text()** 方法允许我们指定要添加文本的位置、文本内容、字体和颜色。

语法

以下是使用 **text()** 方法的基本语法和参数:

PIL.ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left")
  • **xy** - 文本应放置的位置。它应该是一个元组 '(x, y)',表示坐标。

  • **text** - 我们想要添加到图像的文本内容。

  • **fill (可选)** - 文本的颜色。它可以指定为 RGB 颜色的元组 '(R, G, B)',灰度颜色的单个整数,或命名颜色。

  • **font (可选)** - 用于文本的字体。我们可以使用 'ImageFont.truetype()' 或 'ImageFont.load()' 指定字体。

  • **anchor (可选)** - 指定文本应如何锚定。选项包括“left”、“center”、“right”、“top”、“middle”和“bottom”。

  • **spacing (可选)** - 指定文本行之间的间距。使用正值增加间距,或使用负值减少间距。

  • **align (可选)** - 指定文本在边界框内的水平对齐方式。选项包括“left”、“center”和“right”。

以下是本章所有示例中使用的输入图像。

book

示例

在这个示例中,我们使用 **Image** 模块的 **text()** 方法将文本 **Tutorialspoint** 添加到输入图像中。

from PIL import Image, ImageDraw, ImageFont

#Open an image
image = Image.open("Images/book.jpg")

#Create a drawing object
draw = ImageDraw.Draw(image)

#Define text attributes
text = "Tutorialspoint"
font = ImageFont.truetype("arial.ttf", size=30)
text_color = (255, 0, 0)  
#Red
position = (50, 50)

#Add text to the image
draw.text(position, text, fill=text_color, font=font)

#Save or display the image with the added text
image.save("output Image/textoutput.jpg")
opentext = Image.open("output Image/textoutput.jpg")
opentext.show()

输出

textoutput

示例

这是另一个使用 **ImageDraw** 模块的 **text()** 方法向图像添加文本的示例。

from PIL import Image, ImageDraw, ImageFont

#Open an image
image = Image.open("Images/book.jpg")

#Create a drawing object
draw = ImageDraw.Draw(image)

#Define text attributes
text = "Have a Happy learning"
font = ImageFont.truetype("arial.ttf", size=10)
text_color = (255, 0, 255)  
position = (150, 100)

#Add text to the image
draw.text(position, text, fill=text_color, font=font)

#Save or display the image with the added text
image.save("output Image/textoutput.jpg")
opentext = Image.open("output Image/textoutput.jpg")
opentext.show()

输出

textoutput
广告