我需要將一些文本放在Python中的PNG圖像上,我需要在第一個圖像上放置另一個圖像。所以我會有一個基礎圖像(每個圖像創建相同),一個標誌放在左上角,一個文字遍佈圖像(非特定字體,我只需要設置字體大小)。如何在Python中將文本寫在圖像上並覆蓋其上的另一圖像?
我可以使用PIL或其他庫嗎?
我搜索了StackOverflow和Google,但我找不到提示如何做到這一點。
謝謝。
我需要將一些文本放在Python中的PNG圖像上,我需要在第一個圖像上放置另一個圖像。所以我會有一個基礎圖像(每個圖像創建相同),一個標誌放在左上角,一個文字遍佈圖像(非特定字體,我只需要設置字體大小)。如何在Python中將文本寫在圖像上並覆蓋其上的另一圖像?
我可以使用PIL或其他庫嗎?
我搜索了StackOverflow和Google,但我找不到提示如何做到這一點。
謝謝。
PIL可以做到這一點:
import PIL
from PIL import ImageFont
from PIL import Image
from PIL import 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)
draw = ImageDraw.Draw(img)
img.save("a_test.png")
可能出現未找到字體的唯一錯誤。 在這種情況下,你必須更改代碼行:
font = ImageFont.truetype("/usr/share/fonts/dejavu/DejaVuSans.ttf",25)
來源:http://python-catalin.blogspot.com/2010/06/add-text-on-image-with-pil-module.html
PIL是一種方法。你也可以看看ImageMagick,它也支持compositing images並把text into images(和其他許多東西)。
有一個通過PythonMagick到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
來保護它。 該功能的更細節http://docs.opencv.org/2.4.8/modules/core/doc/drawing_functions.html?highlight=puttext#cv2.putText
的fontFace可以稱爲https://codeyarns.com/2015/03/11/fonts-in-opencv/
在你的代碼,還有即將平局= ImageDraw.Draw(IMG)兩條線,我認爲,第二個是沒有必要的。 –