1

PILを使用して画像にテキストをレンダリングすると、®がテキストに含まれているときに余分な文字が追加されます。

入力例:BrandName®

出力例:BrandNameA®

いつも文字Aのようです。

これが私のコードです:

font = ImageFont.truetype(os.path.join(settings.SITE_ROOT, "fixtures/fonts/%s.otf" % font), int(font_size * 10), encoding="unic")
image = Image.new("RGBA", (width * 10, height * 10), convert_hex_color(background))
draw = ImageDraw.Draw(image)
draw.text((0, 0), text, convert_hex_color(foreground), font=font)

この時点で、なぜ余分なキャラクターがそこにいるのかわかりません。PIL1.1.7を使用しています

「テキスト」がメソッドに渡されます。コンソールに印刷すると、次のように表示されます。

About the REALTOR® Content Resource
4

1 に答える 1

3

text最初に unicode オブジェクトに変換してみてください。

textユニコードはいつですか:

import Image
import ImageFont
import ImageDraw

font = ImageFont.truetype('/usr/share/fonts/truetype/msttcorefonts/Arial.ttf', 20)
image = Image.new("RGBA", (300,20), color = (0, 0, 0, 255))
draw = ImageDraw.Draw(image)
text = u'About the REALTOR® Content Resource'
draw.text((0, 0), text, (255, 0, 0, 255), font=font)
image.save('/tmp/out.png')

収量

ここに画像の説明を入力

でもいつ

text = 'About the REALTOR® Content Resource'

コードが生成する

ここに画像の説明を入力


textが の場合、それをdostrに変換するにはunicode

text = text.decode(encoding)

whereは、文字列の実際のエンコーディングにencoding置き換える必要があります。使用する正しいエンコーディングは、 がどのように定義または生成されたかによって異なります。text

于 2012-09-30T15:51:05.807 に答える