Решение № 1. Библиотека изображений Pure Python.
Вы можете попробовать связать PyPNG с вашим приложением. PyPNG - это чистая библиотека Python для создания изображений PNG. Это зависит от модуля zlib, который разрешен в AppEngine, поэтому PyPNG должен работать в AppEngine. Просто используйте объекты StringIO вместо файлов и записывайте в них данные PNG.
Пример бесстыдной адаптации PyPNG, как сделать растровое изображение PNG:
import png
from StringIO import StringIO
# bitmap data
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)
# binary PNG data
print f.getvalue()
Я подозреваю, что неоптимальная производительность, но, насколько я знаю, нет другого способа генерировать изображения на GAE.
И вам все еще нужно выяснить, как растеризовать текст для получения растровых данных. Вероятно, самый простой способ - просто сохранить растровые изображения всех символов (по сути, используя растровый шрифт).
Чтобы отобразить текст ASCII с помощью PyPNG, взгляните на скрипт 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:|Здра́вствуйте|こんにちは|नमस्ते|你好|שלו
производит это:
Ограничения:
- Вы не можете создавать изображения размером более 300000 пикселей
- Настройки стиля и шрифта ограничены
- Некоторые сценарии Unicode недоступны
- Только на белом фоне