[Image-SIG] Putting a unicode string on an ImageDraw canvas
Fredrik Lundh
fredrik at pythonware.com
Mon Jan 10 14:27:34 CET 2011
2011/1/10 Thomas Larsen Wessel <mrvelle at gmail.com>:
> People are telling me that PIL supports unicode strings, does it? And if
> yes, why does the following not work:
>
> import ImageFont, Image, ImageDraw
> s = u'\u0623\u0636\u0641'
> im = Image.new('RGB', (200,200))
> draw = ImageDraw.Draw(im)
> draw.text((40,40), s) #fails
>
> It results in the following exception:
>
> Traceback (most recent call last):
> File "buffer.py", line 9, in <module>
> draw.text((40,40), s) #fails
> File "/usr/lib/python2.6/dist-packages/PIL/ImageDraw.py", line 267, in
> text
> mask = font.getmask(text, self.fontmode)
> UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2:
> ordinal not in range(128)
>
> So how, do I put this unicode string on the canvas?
You'll need a font that supports Unicode, which the crappy default
bitmap font doesn't. Use the ImageFont module to load a suitable
TrueType font.
</F>
More information about the Image-SIG
mailing list