Как вернуть изображение в HTTP-ответе с CherryPy
У меня есть код, который генерирует Каир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
Кроме того, лучше создать и сохранить этот образ в памяти (как я пытаюсь это сделать) или записать его на диск в качестве временного файла и отправить оттуда? Мне нужно изображение только один раз, тогда оно может быть отброшено.