これが私がこれまでに持っている私のコードです。テキストファイルからランダムなテキスト行を取得し、ランダムな色を生成してから、テキストを上にしてJPG画像を作成します。私がやりたいのは、ランダムな写真を撮り、不透明度0.2程度で単色の上にオーバーレイし、その上にテキストを配置して、>単色>画像オーバーレイ>テキストを上に配置することです。このコードは複数の画像を生成します。テキストを垂直方向の中央に配置するのもいいのですが、その方法がわかりません。
import Image, random, textwrap, ImageFont, ImageDraw, os, sys
basepath = os.path.dirname(sys.argv[0]) + "/"
for n in xrange(10):
keywordlist = []
imglist = []
keyword = file(basepath + "text.txt", "r")
for line in keyword:
keywordlist.append(line.replace("\n", ""))
def type(name):
value = name[random.randint(0,len(name)-1)]
return value
def random_color():
return (random.randint(0,155), random.randint(0,155), random.randint(0,155))
astr = ('%s' %(type(keywordlist)))
para = textwrap.wrap(astr,width=19)
MAX_W,MAX_H=640,400
im = Image.new('RGB', (MAX_W, MAX_H), (random_color()))
draw = ImageDraw.Draw(im)
font = ImageFont.truetype('C:/windows/fonts/Arialbd.ttf', 58)
current_h=0
for line in para:
w,h=draw.textsize(line, font=font)
draw.text(((MAX_W-w)/2, current_h), line, font=font,)
current_h+=h
im.save('img%000d.jpg' % n)
出力のサンプルを次に示します。