2016-11-23 4 views
0

次のコードを実行すると、最初の出力ファイルは完全に機能しますが、2番目のファイルはリストの最初と2番目の項目からテキストを描画します。テキストは繰り返しごとに蓄積され続けます。しかし、ファイル名は綺麗で蓄積しません。PythonでImageDraw.Draw(画像)をループするとオーバーレイされたテキストになります

def write_text_to_image(names_list): 
    from PIL import Image, ImageDraw, ImageFont 
    image = Image.open("t.bmp") 
    draw = ImageDraw.Draw(image) 
    font = ImageFont.truetype('arial.ttf', 132) 

    for name in names_list: 
     draw.text((150, 905), name, font = font, fill = (0, 0, 0)) 
     image.save(name + ".bmp") 

答えて

1

私がしようとしたが、私は、オブジェクトdrawが各interationに再作成しなければならないと思いますあなたのコードを見ていませんでした:トリックを行う必要があります

for name in names_list: 
    draw = ImageDraw.Draw(image) 
    ... 

+0

ご返信ありがとうございます。残念ながら私はループのコード行を移動し、それは同じことをやっている。 – user6946738

0

私はファビオの考えが助けられたという質問に私は答えました。 forループ内でイメージの割り当てを移動する必要がありました。

def write_text_to_image(names_list): 
    from PIL import Image, ImageDraw, ImageFont 
    font = ImageFont.truetype('arial.ttf', 132) 

    for name in names_list: 
     image = Image.open("t.bmp") 
     draw = ImageDraw.Draw(image) 
     draw.text((150, 905), name, font = font, fill = (0, 0, 0)) 
     image.save(name + ".bmp") 
関連する問題