Возврат изображения с использованием потока вместо static_file в Bottle

У меня есть простое серверное приложение, написанное на Python с использованием фреймворка Bottle. На одном маршруте я создаю изображение и записываю его в поток, и я хочу вернуть его в качестве ответа. Я знаю, как вернуть файл изображения с помощью функции static_file, но это дорого для меня, так как мне нужно сначала записать изображение в файл. Я хочу обслуживать изображение напрямую, используя объект потока. Как я могу это сделать?

Мой текущий код выглядит примерно так (версия файла):

@route('/image')
def video_image():
    pi_camera.capture("image.jpg", format='jpeg')

    return static_file("image.jpg",
                       root=".",
                       mimetype='image/jpg')

Вместо этого я хочу сделать что-то вроде этого:

@route('/image')
def video_image():
    image_buffer = BytesIO()
    pi_camera.capture(image_buffer, format='jpeg') # This works without a problem

    # What to write here?

person Canol Gökel    schedule 19.01.2015    source источник


Ответы (1)


Просто верните байты. (Вы также должны установить заголовок Content-Type.)

@route('/image')
def video_image():
    image_buffer = BytesIO()
    pi_camera.capture(image_buffer, format='jpeg') # This works without a problem

    image_buffer.seek(0) # this may not be needed
    bytes = image_buffer.read()
    response.set_header('Content-type', 'image/jpeg')
    return bytes
person ron rothman    schedule 21.01.2015