Flask返回图片

Flask返回图片

Flask返回图片

Flask是一个轻量级的Web框架,可以用来开发Web应用程序。在开发Web应用程序时,有时候我们需要返回图片给用户。本文将详细介绍如何使用Flask返回图片。

准备工作

在开始之前,我们需要安装Flask和PIL库(Python Imaging Library)。你可以通过以下命令安装:

pip install Flask
pip install Pillow

返回静态图片

首先,我们需要在Flask应用程序中创建一个文件夹来存放静态图片。在项目目录下创建一个名为“static”的文件夹,并在其中上传几张图片,例如“image.jpg”。

然后,在Flask应用程序的路由中添加以下代码:

from flask import Flask, send_file

app = Flask(__name__)

@app.route('/image')
def get_image():
    return send_file('static/image.jpg', mimetype='image/jpg')

if __name__ == '__main__':
    app.run()

在上面的代码中,我们定义了一个路由“/image”,当用户访问这个路由时,Flask将会返回名为“image.jpg”的静态图片。我们使用send_file函数来发送图片,并通过mimetype参数指定图片的类型。

运行Flask应用程序后,打开浏览器访问http://127.0.0.1:5000/image,你将会看到返回的图片。

返回动态生成的图片

有时候,我们需要动态生成图片并返回给用户。PIL库提供了生成图片的功能。下面是一个示例,使用PIL生成一张红色背景的图片:

from flask import Flask, send_file
from PIL import Image
from io import BytesIO

app = Flask(__name__)

@app.route('/dynamic_image')
def get_dynamic_image():
    img = Image.new('RGB', (100, 100), color = 'red')
    img_io = BytesIO()
    img.save(img_io, 'JPEG')
    img_io.seek(0)
    return send_file(img_io, mimetype='image/jpg')

if __name__ == '__main__':
    app.run()

在上面的代码中,我们使用PIL库创建了一张红色背景的图片,并将其以JPEG格式保存在img_io变量中。最后,通过send_file函数返回该图片。

运行Flask应用程序后,打开浏览器访问http://127.0.0.1:5000/dynamic_image,你将会看到动态生成的红色图片。

返回base64编码图片

有时候,我们希望将图片以base64编码的形式返回给用户。Flask提供了send_file函数的as_attachment参数,可以指定返回的文件为附件。

下面是一个示例,返回一张图片的base64编码:

import base64
from flask import Flask, send_file
from PIL import Image
from io import BytesIO

app = Flask(__name__)

@app.route('/base64_image')
def get_base64_image():
    img = Image.new('RGB', (100, 100), color = 'blue')
    img_io = BytesIO()
    img.save(img_io, 'JPEG')
    img_io.seek(0)
    img_data = img_io.getvalue()
    img_base64 = base64.b64encode(img_data).decode('utf-8')

    return f'<img src="data:image/jpeg;base64,{img_base64}">'

if __name__ == '__main__':
    app.run()

在上面的代码中,我们创建了一个蓝色背景的图片,并将其转换为base64编码。最后,我们通过Flask返回一个包含base64编码图片的HTML标签,浏览器将会自动解析并显示这张图片。

运行Flask应用程序后,打开浏览器访问http://127.0.0.1:5000/base64_image,你将会看到返回的base64编码图片。

结语

本文详细介绍了使用Flask返回图片的方法,包括返回静态图片、动态生成图片和返回base64编码图片。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程