2011-11-16 13 views
8

私はPythonでPNG画像の上にテキストを配置する必要があります。最初の画像の上に別の画像を配置する必要があります。イメージの上にテキストを書いて、それに別のイメージをPythonでオーバーレイするにはどうすればいいですか?

私はベースイメージ(作成されたすべてのイメージで同じ)、左上隅に置くためのロゴ、イメージ全体のテキスト(非特定のフォント、私はフォントサイズを設定してください)。

PILや別のライブラリを使用できますか?

私はStackOverflowとGoogleで検索しましたが、これを行う方法に関するヒントは見つかりませんでした。

ありがとうございました。

答えて

17

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

+0

を参照することができている、引き分け= ImageDraw.Draw(IMG)の約2行がそこにいる、私が思うに、もう一つは必要ありません。 –

2

私はOpenCVのが使いやすいと思う:元の画像を変更することができるので、私はそれを保護するためにnp.copyを追加することを

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() 

注意。機能上の 詳細は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/

関連する問題