python文字转图片:如何使用生成带有文本的图像?

2021年11月7日17:51:38 发表评论 1,949 次浏览

python如何将文字转为图片?使用几行 Python 和 Pillow 创建图像按钮或横幅。

这是展示如何使用Pillow(推荐 PIL 的叉子)绘制图像的快速指南。让我们从一些导入开始,并逐步执行python文字转图片示例:

from PIL import Image, ImageDraw, ImageFont
from utils import display_pillow_image

python如何将文字转为图片?绘制一个简单的方形图像

我们将使用它Image.new来生成一个新的wh高和特定颜色的图像;我将绘制一个红色矩形(100x100):

w = 100 # 100 pixels wide
h = 100 # 100 pixels high

img = Image.new('RGB', (w, h), color='#FF0000')
display_pillow_image(img)
python文字转图片:如何使用生成带有文本的图像?

颜色可以用十六进制 ( #FF0000) 或 RGB 数组指定:

img = Image.new('RGB', (350, 70), color=(51, 144, 255))
display_pillow_image(img)
python文字转图片:如何使用生成带有文本的图像?

python文字转图片:给图片添加文字

我们可以创建一个ImageDraw对象来为图像添加 2D 图形,例如文本,如下python文字转图像例子

img = Image.new('RGB', (350, 70), color=(51, 144, 255))
# create the canvas
canvas = ImageDraw.Draw(img)
canvas.text((10, 10), "Hello World", fill='#FFFFFF')
display_pillow_image(img)
python文字转图片:如何使用生成带有文本的图像?

传递给text(10, 10))的第一个元组是文本的xy位置,另一个例子:

img = Image.new('RGB', (350, 70), color=(51, 144, 255))
# create the canvas
canvas = ImageDraw.Draw(img)
canvas.text((250, 25), "Hello World", fill='#FFFFFF')
display_pillow_image(img)
python文字转图片:如何使用生成带有文本的图像?

自定义文本样式

你可以使用ImageFont自定义大小和使用的字体。例如,我在这个项目中包含了我们的主要排版(Lato)。我可以在本地加载它并将其用于文本:

img = Image.new('RGB', (350, 70), color=(51, 144, 255))
# create the canvas
canvas = ImageDraw.Draw(img)
font = ImageFont.truetype('Lato-Bold.ttf', size=24)
canvas.text((10, 10), "Hello World", font=font, fill='#FFFFFF')
display_pillow_image(img)
python文字转图片:如何使用生成带有文本的图像?

python文字转图片:居中文本

python如何将文字转为图片?对象有一个有用的方法ImageDraw,可以让你计算将要绘制的文本的宽度和高度。你可以使用它来计算文本的正确 x 和 y 位置,python文字转图像例子如下:

image_width = 350
image_height = 70
img = Image.new('RGB', (image_width, image_height), color=(51, 144, 255))
# create the canvas
canvas = ImageDraw.Draw(img)
font = ImageFont.truetype('Lato-Bold.ttf', size=24)
text_width, text_height = canvas.textsize('Hello World', font=font)
print(f"Text width: {text_width}")
print(f"Text height: {text_height}")
文字宽度:134
文字高度:24
x_pos = int((image_width - text_width) / 2)
y_pos = int((image_height - text_height) / 2)
print(f"X: {x_pos}")
print(f"Y: {y_pos}")
X:108
Y:23
canvas.text((x_pos, y_pos), "Hello World", font=font, fill='#FFFFFF')
display_pillow_image(img)
python文字转图片:如何使用生成带有文本的图像?

就是这样!你还能想到什么其他例子?

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: