Мапник в колбу - PullRequest
       23

Мапник в колбу

0 голосов
/ 16 апреля 2019

Я пытаюсь динамически генерировать визуализации 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.

1 Ответ

0 голосов
/ 17 апреля 2019

Я нашел это решение

from flask import Flask, Response
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)
    return Response(image.tostring('png'), mimetype='img/png')

Но оно кажется медленнее в контексте моего приложения

...