Я пытаюсь динамически генерировать визуализации Mapnik в приложении Flask и возвращать изображение.Я заставляю его работать так:
from io import BytesIO
from flask import Flask, send_file
import mapnik
app = Flask(__name__)
@app.route("/")
def serve_image():
image = mapnik.Image(600, 300)
mp = mapnik.Map(600, 300)
mp.background = mapnik.Color('steelblue')
mapnik.render(mp, image)
# I would like to avoid the next two lines
image.save('test.png', 'png')
with open('test.png') as new_image:
ret = BytesIO(new_image.read())
return send_file(ret, mimetype='image/png')
Примечания: я сохраняю файл на диск (выполненный во внутренних C ++ работах Mapnik) и (Python) считываю его обратно с диска.Я не могу понять, как получить изображение Mapnik в буфер файлов Python более прямым способом.
Подсказки: я в основном пытался использовать метод Mapnik.Image.tostring
, но безуспешно.Я использую старые привязки Python 2.7 из-за боли при установке их в Python 3.