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

 更新时间:2020年01月09日 14:16:17   作者:子辰曦  
今天小编就为大家分享一篇flask 实现上传图片并缩放作为头像的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

个人开发的 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_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)) 语句将略缩图片保存到服务指定路径。

以上这篇flask 实现上传图片并缩放作为头像的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 中制作偶数列表的方法

    Python 中制作偶数列表的方法

    这篇文章主要介绍了Python 中制作偶数列表的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Python-openCV开运算实例

    Python-openCV开运算实例

    这篇文章主要介绍了Python-openCV开运算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 将pytorch转成longtensor的简单方法

    将pytorch转成longtensor的简单方法

    今天小编就为大家分享一篇将pytorch转成longtensor的简单方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 15个最近才知道的Python实用操作

    15个最近才知道的Python实用操作

    这篇文章主要和大家分享了15个最近才知道的Python实用操作,文中的示例代码讲解详细,对我们深入了解Python有一定的帮助,感兴趣的小伙伴可以了解一下
    2023-04-04
  • 举例讲解Python常用模块

    举例讲解Python常用模块

    今天小编就为大家分享一篇关于举例讲解Python常用模块,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • OpenCV半小时掌握基本操作之高斯双边

    OpenCV半小时掌握基本操作之高斯双边

    这篇文章主要介绍了OpenCV基本操作之高斯双边,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Flask传递URL参数的实现

    Flask传递URL参数的实现

    在Flask中,传递URL参数是一种常见且强大的功能,本文主要介绍了Flask传递URL参数的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-09-09
  • python 自动重连wifi windows的方法

    python 自动重连wifi windows的方法

    今天小编就为大家分享一篇python 自动重连wifi windows的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python获取电脑硬件信息及状态的实现方法

    Python获取电脑硬件信息及状态的实现方法

    这篇文章主要介绍了Python获取电脑硬件信息及状态的实现方法,是一个很实用的技巧,需要的朋友可以参考下
    2014-08-08
  • 使用Python脚本实现批量网站存活检测遇到问题及解决方法

    使用Python脚本实现批量网站存活检测遇到问题及解决方法

    本文是小编自己编写的一个使用python实现批量网站存活检测。在项目测试中非常有用。本文给大家分享了遇到的问题及解决方案,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10

最新评论