python3:PIL /枕头和Django:将文本转换为图像并在页面上显示

时间:2017-03-18 18:25:18

标签: python django python-3.x django-templates python-imaging-library

我正在尝试使用枕头和Django将文本字段转换为图像。

文本是动态创建的(因此我无法事先创建所有文本,将其转换为图像,然后上传它们)。必须创建每个图像"在飞行中"然后显示在正确的页面上。

我理解(也许?)正确的方法是使用IO包将图片加载到内存中,然后将其传递给django html以显示在那里。但是我在执行方面遇到了麻烦。

我是Django / Python编程的新手,所以我找人帮我,他告诉我做这样的事情:

def render(txt, fontsize=20, encoding=None):
   txt = txt.strip()
   lines = len(txt.splitlines()) or 1

   font = ImageFont.truetype(ARIAL_TTF, fontsize)
   width, height = font.getsize(txt)

   image = Image.new("RGBA", (width, height*lines), (232,232,232))
   draw = ImageDraw.Draw(image)

   draw.text((0, 0), txt, (0, 0, 0), font=font)

   temp = six.StringIO()
   image.save(temp, 'png')
   if encoding:
        return temp.encode(encoding)
   return temp.getvalue()

问题是StringIO()产生的一个StringIO对象不能被image.save读取为文件(名称) - 至少这是我得到的错误信息:"期望字符串得到字节&#34 ;。显然,上面的内容在Python2中运行,但我现在没有选择(其他依赖只适用于Python3)。

我试图通过使用:

来避免这种情况
image.save(temp.getvalue(),'png')

然后它告诉我文件""不存在(这是有道理的,我猜)。

0 个答案:

没有答案