Как вернуть изображение PIL в памяти из приложения WSGI
Я прочитал много сообщений, таких как этот эта деталь, как динамически возвращать изображение с помощью WSGI. Однако все примеры, которые я видел, открывают изображение в двоичном формате, читают его, а затем возвращают эти данные (это отлично работает для меня).
Я застрял, пытаясь достичь того же самого, используя объект изображения PIL в памяти. Я не хочу сохранять изображение в файл, так как у меня уже есть изображение в памяти.
дали это:
fd = open( aPath2Png, 'rb')
base = Image.open(fd)
... lots more image processing on base happens ...
Я попытался это:
data = base.tostring()
response_headers = [('Content-type', 'image/png'), ('Content-length', len(data))]
start_response(status, response_headers)
return [data]
WSGI вернет это клиенту в порядке. Но я получу ошибку для изображения, говоря, что что-то не так с возвращенным изображением.
какие есть другие способы?
1 ответов
Посмотреть Изображения.спасать.)( Он может взять объект file, и в этом случае вы можете записать его в экземпляр StringIO. Таким образом что-то вроде:
output = StringIO.StringIO()
base.save(output, format='PNG')
return [output.getvalue()]
вам нужно будет проверить, какие значения вы можете использовать для формата.