微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flask 实现上传图片并缩放作为头像的例子更换你的头像

今天小编就为大家分享一篇flask 实现上传图片并缩放作为头像的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

个人开发的 flask 论坛进入尾声,还剩最后一个上传图片更换头像功能,搞了一整天,最后终于解决了所有问题,现在记录下解决方案。

1. 上传文件

分析一下更换头像功能,我们需要做哪些事,简单的思路是:上传文件获取文件的 url 。

文件上传的基本原理实际上很简单,基本上是:

一个带有 enctype=multipart/form-data 的

标记标记中含有 一个 。应用通过请求对象的 files 字典来访问文件

使用文件的 save() 方法文件永久 地保存在文件系统中。

于是可以得到我们的提供上传按钮的表单页面

{% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}SYSUfm - 更换头像{% endblock %} {% block page_content %}

更换你的头像

{% endblock %}

2. 创建略缩图

接下来我们需要有路由到这个页面的视图函数,服务器后台端的代码如下:

@main.route('/edit-avatar', methods=['GET', 'POST']) @login_required def change_avatar(): if request.method == 'POST': file = request.files['file'] size = (40, 40) im = Image.open(file) im.thumbnail(size) if file and allowed_file(file.filename): filename = secure_filename(file.filename) im.save(os.path.join(main.static_folder, 'avatar', filename)) current_user.new_avatar_file = url_for('main.static', filename='%s/%s' % ('avatar', filename)) current_user.is_avatar_default = False flash(u'头像修改成功') return redirect(url_for('.user', username=current_user.username)) return render_template('change_avatar.html')

这里 main 是一个 blueprint,file = request.files['file'] 语句获得图片文件对象,将其转换为 Image 对象,通过 thumbnail 方法进行略缩。

最后 im.save(os.path.join(main.static_folder, 'avatar', filename)) 语句将略缩图片保存到服务指定路径。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐