Flask 返回图片 response
在Web开发中,有时候我们需要在网页上展示图片。而Flask作为一个流行的Python web框架,也可以很方便地返回图片的响应。
准备图片文件
首先,我们需要准备一张图片文件,比如一张名为example.jpg
的图片。
创建Flask应用
接下来,我们创建一个Flask应用并编写一个路由,用于返回图片的响应。
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/image')
def get_image():
path_to_image = 'example.jpg'
return send_file(path_to_image, mimetype='image/jpg')
在上面的代码中,我们创建了一个名为get_image
的路由,它会返回example.jpg
这张图片。我们使用send_file
函数来发送文件,并设置mimetype
参数为image/jpg
来指定响应的内容类型为图片。
运行Flask应用
接下来,我们运行我们的Flask应用,并访问之前定义的路由/image
。
if __name__ == '__main__':
app.run()
在浏览器中访问http://localhost:5000/image
,你会看到浏览器会展示出example.jpg
这张图片。
扩展
除了返回本地的图片文件外,我们还可以在Flask中返回动态生成的图片。比如,我们可以使用Pillow库来生成一张带有文字的图片,并在Flask中返回这张图片。
from flask import Flask, send_file
from PIL import Image, ImageDraw, ImageFont
app = Flask(__name__)
@app.route('/dynamic_image')
def get_dynamic_image():
image = Image.new('RGB', (200, 50), color = (73, 109, 137))
d = ImageDraw.Draw(image)
font = ImageFont.truetype('arial.ttf', 30)
d.text((10,10), "Hello, Flask!", fill=(255,255,0), font=font)
image.save('dynamic_image.jpg')
return send_file('dynamic_image.jpg', mimetype='image/jpg')
if __name__ == '__main__':
app.run()
在上面的代码中,我们创建了一个名为get_dynamic_image
的路由,它会生成一张带有文字”Hello, Flask!”的图片,并返回这张图片。我们先创建一张背景色为(73, 109, 137)的图片,然后在图片上绘制文字”Hello, Flask!”,最后返回这张动态生成的图片。
在浏览器中访问http://localhost:5000/dynamic_image
,你会看到浏览器会展示出带有文字的图片。
结论
Flask提供了很方便的方法来返回图片响应,无论是静态图片文件还是动态生成的图片。通过以上的示例,你可以在Flask中轻松地展示图片内容。