flask返回图片流

BOYE / 2024-10-23 / 原文

# -*- coding: utf-8 -*-
import os
from io import BytesIO
from PIL import Image
from flask import Flask, make_response,send_file

app = Flask(__name__)
app.config['SECRET_KEY'] = 'test'
BASE_PATH = os.path.dirname(os.path.abspath(__file__))

def get_image_stream(name):
    with open(f'{name}.jpg', 'rb') as image_file:
        image_stream = image_file.read()
    return image_stream

@app.route('/image/<image_id>')
def image(image_id):
    if image_id=="1":
        # 将图片发送到浏览器
        return send_file('1.jpg', mimetype='image/jpeg')
    elif image_id=="2":
        return get_image_stream(2)

    else :
        img = Image.new('RGB', (200, 200), color = (73, 109, 137))
        out = BytesIO()
        img.save(out, 'jpeg')
        out.seek(0)
        resp = make_response(out)
        resp.content_type = 'image/jpeg'
        return resp


@app.route('/<image_id>')
def index(image_id):

    return f"<img src='/image/{image_id}'>"

if __name__ == '__main__':
    app.run( host='0.0.0.0', port=9181, debug=True)