У меня есть код, который генерирует Cairo ImageSurface
, и я выставляю его так:
def preview(...):
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
...
cherrypy.response.headers['Content-Type'] = "image/png"
return surface.get_data()
preview.exposed = True
Это не работает (браузеры сообщают, что изображение содержит ошибки).
Я проверил, что surface.write_to_png('test.png')
работает, но я не уверен, куда сбрасывать данные, чтобы вернуть их. Я предполагаю, что какой-то файлоподобный объект? Согласно документации pycairo, get_data()
возвращает буфер. Я также сейчас пробовал:
tempf = os.tmpfile()
surface.write_to_png(tempf)
return tempf
Кроме того, лучше ли создать и хранить этот образ в памяти (как я пытаюсь сделать) или записать его на диск в виде временного файла и обслуживать его оттуда? Мне изображение нужно только один раз, потом его можно выбросить.
write_to_png_stream
? cairographics.org/documentation/cairomm/reference/ - person Pekka   schedule 17.06.2010