使用流而不是Bottle中的static_file返回图像

时间:2015-01-19 16:50:39

标签: python stream bottle

我有一个使用Bottle框架用Python编写的简单服务器应用程序。在一条路线上,我创建了一个图像并将其写入流中,我希望将其作为响应返回。我知道如何使用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?

1 个答案:

答案 0 :(得分:6)

只返回字节。 (您还应该设置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