flask 实现上传图片并缩放作为头像
来源:互联网 发布:华讯网络好吗 编辑:程序博客网 时间:2024/05/17 21:43
个人开发的 flask 论坛进入尾声,还剩最后一个上传图片更换头像功能,搞了一整天,最后终于解决了所有问题,现在记录下解决方案。
1. 上传文件
分析一下更换头像功能,我们需要做哪些事,简单的思路是:上传文件,获取文件的 url 。
文件上传的基本原理实际上很简单,基本上是:
- 一个带有
enctype=multipart/form-data
的<form>
标记,标记中含有 一个<input type=file>
。 - 应用通过请求对象的 files 字典来访问文件。
- 使用文件的 save() 方法把文件永久 地保存在文件系统中。
于是可以得到我们的提供上传按钮的表单页面:
{% extends "base.html" %}{% import "bootstrap/wtf.html" as wtf %}{% block title %}SYSUfm - 更换头像{% endblock %}{% block page_content %}<div class="page-header"> <h1>更换你的头像</h1></div><div class="col-md-4"> <form action="" method=post enctype=multipart/form-data> <input type=file name=file><br/> <input type=submit value=Upload> </form></div>{% endblock %}
2. 创建略缩图
接下来我们需要有路由到这个页面的视图函数,服务器后台端的代码如下:
@main.route('/edit-avatar', methods=['GET', 'POST'])@login_requireddef 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))
语句将略缩图片保存到服务指定路径。
参考
flask 上传图片
创建缩略图
0 0
- flask 实现上传图片并缩放作为头像
- node.js+express 实现CSDN上传头像功能 (包含图片的缩放,生成头像缩略图)
- Android实现本地上传图片并设置为圆形头像
- java读取图片处理实现缩放裁剪,用于个人信息中上传图片自定义头像大小
- Flask 上传自定义头像
- 图片缩放并切割上传
- PHP上传图片并缩放
- 上传头像或单张图片并预览
- cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)
- cropper.js 实现HTML5 裁剪图片并上传(裁剪上传头像。)
- android 拍照,裁切,上传圆形头像, 图片等比缩放
- 用户上传本地磁盘中的一个图片文件作为头像
- springmvc+ajaxfileupload实现头像上传并预览
- 会员中心上传头像时的,上传图片并剪切
- 实现图片下拉放大和导航栏头像缩放效果
- 头像预览并上传
- jQuery点击头像上传头像图片并预览图片
- 上传图片 头像
- dfs和bfs
- window环境下安装easy_install
- Linux Select/Epoll注记
- HDU 5531 几何公式
- Firefox 与 sublime text 3 通过LiveReload插件实现前端代码实时预览
- flask 实现上传图片并缩放作为头像
- POJ 1930 Dead Fraction(小数化分数)
- 【USACO5.3.3】Network of Schools
- Spark+Kafka的Direct方式将偏移量发送到Zookeeper的实现
- python标准库学习3-fileinput
- B树、B-树、B+树、B*树 红黑树
- OpenLayers 3 之 事件体系详解
- 页面生成树形查询的后台实现方法
- zjnu MAFIJA (图论)