Python Pillow 简明教程

Python Pillow - Writing text on image

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

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

The text() method

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

Syntax

以下是 text() 方法的基本语法和参数 −

PIL.ImageDraw.Draw.text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left")
  1. xy − 文本应放置的位置。它应为表示坐标的元组“(x,y)”。

  2. text − 我们要添加到图像中的文本内容。

  3. fill (optional) − 文本的颜色。它可以指定为 RGB 颜色的元组“(R、G、B)”单整数(表示灰度颜色)或指定为命名颜色。

  4. font (optional) − 用于文本的字体。我们可以使用“ImageFont.truetype()”或“ImageFont.load()”指定字体。

  5. anchor (optional) − 指定文本应如何定位。选项包括“left”,“center”,“right”,“top”,“middle”和“bottom”。

  6. spacing (optional) − 指定文本行之间的行距。使用正值增加行距或使用负值减小行距。

  7. align (optional) − 指定文本在边界框内的水平对齐方式。选项包括“left”,“center”和“right”。

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

book

Example

在此示例中,我们将 Image 模块的 Tutorialspoint*to the input image using the *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 = "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

Example

这是另一个使用 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 image