Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中,如何在图像上写入文本,并在其上覆盖另一个图像?_Python_Png_Python Imaging Library - Fatal编程技术网

在Python中,如何在图像上写入文本,并在其上覆盖另一个图像?

在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

我需要在Python中的PNG图像上放置一些文本,我还需要在第一个图像上放置另一个图像

因此,我将有一个基本图像(创建的每个图像都是一样的),一个徽标放在左上角,整个图像上都有一个文本(非特定字体,我只需要设置字体大小)

我可以使用PIL或其他图书馆吗

我也在StackOverflow和Google上搜索过,但我找不到如何做到这一点的提示

谢谢。

PIL可以做到:

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)有两行,我认为第二行是不必要的。有没有办法获得绘制文本的像素大小?