功能很简单,就是用户通过表单 'POST' 提交用户名,然后根据用户名生成一个用户头像的 portrait.png 的 图片返回。
- 方式一:是把已经生成好的头像图片,返回给页面,图片可以正常显示,也可以另存。
def generate_portrait():
user_img = Image.open('portrait.png')
out = BytesIO()
user_img.save(out, 'PNG')
out.seek(0)
return send_file(out, mimetype='image/png')
- 方式二:如果是用户通过表单提交用户名,生成 portrait.png 之后,立即返回给页面。在页面上,图片可以显示,但是无法保存(要么提示网络错误,要么保存到硬盘也打不开)
def generate_portrait():
form = PortraitForm()
if form.validate_on_submit():
... some code to generate portrait.png and save to local disk ...
user_img = Image.open('portrait.png')
out = BytesIO()
user_img.save(out, 'PNG')
out.seek(0)
return send_file(out, mimetype='image/png')
....
看起来方式一、和方式二并没有大的区别,方式二我也把 portrait.png 先落盘存到磁盘上,再读取返回,也不行。
方式一是把图片生成和返回在 2 个 request 里完成的,方式二就是在 1 个 request 里同时“生成”图片并“返回”图片
这个问题搜了不少地方,都没有看到类似的问题和解决方法。不清楚问题到底处在哪儿了