在Python中,如何在图像上写入文本,并在其上覆盖另一个图像?
我需要在Python中的PNG图像上放置一些文本,我还需要在第一个图像上放置另一个图像 因此,我将有一个基本图像(创建的每个图像都是一样的),一个徽标放在左上角,整个图像上都有一个文本(非特定字体,我只需要设置字体大小) 我可以使用PIL或其他图书馆吗 我也在StackOverflow和Google上搜索过,但我找不到如何做到这一点的提示 谢谢。PIL可以做到:在Python中,如何在图像上写入文本,并在其上覆盖另一个图像?,python,png,python-imaging-library,Python,Png,Python Imaging Library,我需要在Python中的PNG图像上放置一些文本,我还需要在第一个图像上放置另一个图像 因此,我将有一个基本图像(创建的每个图像都是一样的),一个徽标放在左上角,整个图像上都有一个文本(非特定字体,我只需要设置字体大小) 我可以使用PIL或其他图书馆吗 我也在StackOverflow和Google上搜索过,但我找不到如何做到这一点的提示 谢谢。PIL可以做到: from PIL import Image, ImageFont, ImageDraw font = ImageFont.truety
from PIL import Image, ImageFont, ImageDraw
font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf", 25)
img = Image.new("RGBA", (200,200), (120,20,20))
draw = ImageDraw.Draw(img)
draw.text((0,0), "This is a test", (255,255,0), font=font)
img.save("a_test.png")
唯一可能发生的错误是找不到字体。
在这种情况下,您必须更改代码行:
font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf",25)
资料来源:PIL是一种方法。您还可以查看,它还支持和放置(以及许多其他内容)
ImageMagick有一个python接口。我认为opencv更易于使用:
import cv2
import numpy as np
import matplotlib.pyplot as plt
image = cv2.imread('xxx.png')
texted_image =cv2.putText(img=np.copy(image), text="hello", org=(200,200),fontFace=3, fontScale=3, color=(0,0,255), thickness=5)
plt.imshow(texted_image)
plt.show()
请注意,原始图像可能会更改,因此我添加了np.copy
以保护它。
有关该函数的更多详细信息,请参阅
fontFace可以在代码中引用,关于draw=ImageDraw.draw(img)有两行,我认为第二行是不必要的。有没有办法获得绘制文本的像素大小?