开发者

PIL problems: failed in loading any font library and using unicode

开发者 https://www.devze.com 2023-03-05 06:26 出处:网络
I newly installed PIL. But I find: I can\'t load any font lib using \"ImageFont.truetype(\"xxx.ttc\", 50)\"

I newly installed PIL. But I find:

  1. I can't load any font lib using "ImageFont.truetype("xxx.ttc", 50)" and the like.
  2. When I render some text to image, and the text is unicode containing Chinese characters, I get UnicodeEncodeError like:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u6211' in position 0: ordinal not in range(128)

The problem script is:

# -*- coding: utf-8 -*-

import sys
from PIL import Image
import ImageFont, ImageDraw

text = sys.argv[1]
if not isinstance(text, unicode):
    text = text.decode('gbk')
filename = sys.argv[2]

image = Image.new("RGBA", (100, 100), (255,255,255))
usr_font = ImageFont.truetype("simsun.ttc", 50)  #In fact, it can't load any font lib.
d_usr = ImageDraw.Draw(image)
d_usr = d_usr.text((10, 10), text, fil开发者_如何学JAVAl = "blue", font=usr_font) #error when text is Chinese
image.save(filename)

My OS is Windows7, with Python 2.5 installed. Can anyone help me? Thanks in advance!


It works fine on Ubuntu10.10 with python 2.6.6 Perhaps try using the absolute path to the tcc font?

This is the code that runs flawlessly:

#! /usr/bin/python
# -*- coding: utf-8 -*-

import Image
import ImageDraw
import ImageFont

ttfont = ImageFont.truetype ('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 20)
text = u'我能有乾酪?'
image = Image.new ('RGB', (256, 128), 0xffffff);
ImageDraw.Draw (image).text ( (20, 20), text, font = ttfont, fill = (0, 0, 0) )
image.save ('chinese.jpg')
0

精彩评论

暂无评论...
验证码 换一张
取 消