解决方案 #1. 使用纯Python图像库。
您可以尝试将 PyPNG 与您的应用程序捆绑在一起。 PyPNG是一个用于创建PNG图像的纯Python库。它依赖于zlib模块,在AppEngine上是允许的,因此PyPNG应该可以在AppEngine上工作。只需使用StringIO对象代替文件并将PNG数据写入它们。
无耻地改编了PyPNG如何制作位图PNG图像的示例:
import png
from StringIO import StringIO
s = ['110010010011',
'101011010100',
'110010110101',
'100010010011']
s = map(lambda x: map(int, x), s)
f = StringIO()
w = png.Writer(len(s[0]), len(s), greyscale=True, bitdepth=1)
w.write(f, s)
print f.getvalue()
我怀疑表现亚优,但据我所知,在GAE上没有其他生成图像的方法。
而且你仍然需要想办法栅格化文本以产生位图数据。最简单的方法可能就是保留所有符号的位图(基本上是使用位图字体)。
要使用PyPNG呈现ASCII文本,请查看texttopng脚本。
因此,限制如下:
解决方案#2。离线文本到图像渲染。
Google AppEngine不提供将文本呈现为光栅图像的工具,但Google Charts提供此功能。通过正确选择参数,轮廓文本图表只需将简单文本呈现为PNG图像。
例如,http://chart.apis.google.com/chart?chst=d_text_outline&chld=000000|32|h|FFFFFF|_|Render text to image|with Google Charts.|Some Unicode too:|Здра́вствуйте|こんにちは|नमस्ते|你好|שלו
会生成以下图像:
![text-to-image on Google Charts](https://chart.apis.google.com/chart?chst=d_text_outline&chld=000000|32|h|FFFFFF|_|Render%20text%20to%20image|with%20Google%20Charts.|Some%20Unicode%20too:|%D0%97%D0%B4%D1%80%D0%B0%CC%81%D0%B2%D1%81%D1%82%D0%B2%D1%83%D0%B9%D1%82%D0%B5%7C%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%7C%E0%A4%A8%E0%A4%AE%E0%A4%B8%E0%A5%8D%E0%A4%A4%E0%A5%87%7C%E4%BD%A0%E5%A5%BD%7C%D7%A9%D7%9C%D7%95)
限制如下:
- 您无法生成大于300000个像素的图像
- 样式和字体定制有限
- 某些Unicode脚本不可用
- 仅支持白色背景
pango-view
? - hasen