1

PIL を使用して画像にテキストを書き込む Python スクリプトがあります。改行を含む文字列に遭遇した場合を除いて、これはすべて正常に機能しています。テキスト内の改行を保持する必要があります。キャリッジ リターンを画像に書き込む代わりに、リターンがあるべき場所に小さな四角形の文字が表示されます。テキストを書いているコードは次のとおりです。

<code>
 draw = ImageDraw.Draw(blankTemplate)
 draw.text((35 + attSpacing, 570),str(attText),fill=0,font=attFont)
</code>

attText は、私が問題を抱えている変数です。場合によっては数値であるため、書き込む前に文字列にキャストしています。

助けてくれてありがとう。

4

2 に答える 2

7

ちょっと考えてみましょう。「返す」とはどういう意味ですか?これは、少し左に移動し、少し下に移動して文字の表示を再開することを意味します。

次のようなことをしなければなりません。

y, x = 35, 570
for line in attText.splitlines():
    draw.text( (x,y), line, ... )
    y = y + attSpacing
于 2009-04-14T16:58:25.440 に答える
0

私のニーズに完全に適した次のコードを試すことができます。

# Place Text on background
    lineCnt = 0
    for line in str(attText):
        draw = ImageDraw.Draw(blankTemplate)
        draw.text((35 + attSpacing,570 + 80 * lineCnt), line, font=attFont)
        lineCnt = lineCnt +1

式 "y+80*lineCnt" は、行番号に応じてテキストを y 位置に移動します。(シフトの係数「80」は、フォントに応じて調整する必要があります)。

于 2016-06-15T22:19:58.870 に答える