欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

flask 實現(xiàn)上傳圖片并縮放作為頭像的例子

 更新時間:2020年01月09日 14:16:17   作者:子辰曦  
今天小編就為大家分享一篇flask 實現(xiàn)上傳圖片并縮放作為頭像的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

個人開發(fā)的 flask 論壇進(jìn)入尾聲,還剩最后一個上傳圖片更換頭像功能,搞了一整天,最后終于解決了所有問題,現(xiàn)在記錄下解決方案。

1. 上傳文件

分析一下更換頭像功能,我們需要做哪些事,簡單的思路是:上傳文件,獲取文件的 url 。

文件上傳的基本原理實際上很簡單,基本上是:

一個帶有 enctype=multipart/form-data 的 <form> 標(biāo)記,標(biāo)記中含有 一個 <input type=file>。

應(yīng)用通過請求對象的 files 字典來訪問文件。

使用文件的 save() 方法把文件永久 地保存在文件系統(tǒng)中。

于是可以得到我們的提供上傳按鈕的表單頁面:

{% 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. 創(chuàng)建略縮圖

接下來我們需要有路由到這個頁面的視圖函數(shù),服務(wù)器后臺端的代碼如下:

@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'] 語句獲得圖片文件對象,將其轉(zhuǎn)換為 Image 對象,通過 thumbnail 方法進(jìn)行略縮。

最后 im.save(os.path.join(main.static_folder, 'avatar', filename)) 語句將略縮圖片保存到服務(wù)指定路徑。

以上這篇flask 實現(xiàn)上傳圖片并縮放作為頭像的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python爬蟲爬取微信朋友圈

    Python爬蟲爬取微信朋友圈

    這篇文章主要介紹了Python爬蟲爬取微信朋友圈的方法,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)Python爬蟲,感興趣的朋友可以了解下
    2020-08-08
  • python判斷字符串是否包含子字符串的方法

    python判斷字符串是否包含子字符串的方法

    這篇文章主要介紹了python判斷字符串是否包含子字符串的方法,實例分析了Python中的in與find方法來實現(xiàn)這一功能,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • 淺談sklearn中predict與predict_proba區(qū)別

    淺談sklearn中predict與predict_proba區(qū)別

    這篇文章主要介紹了淺談sklearn中predict與predict_proba區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python列表append和+的區(qū)別淺析

    Python列表append和+的區(qū)別淺析

    這篇文章主要介紹了Python列表append和+的區(qū)別淺析,本文得出一的結(jié)論是使用append實際是修改一個列表,使用+實際是創(chuàng)建一個新的列表,需要的朋友可以參考下
    2015-02-02
  • python使用selenium爬蟲知乎的方法示例

    python使用selenium爬蟲知乎的方法示例

    這篇文章主要介紹了python使用selenium爬蟲知乎的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • 如何在代碼中安裝?Python?模塊

    如何在代碼中安裝?Python?模塊

    這篇文章主要介紹了如何在代碼中安裝Python模塊,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • Django多數(shù)據(jù)庫聯(lián)用實現(xiàn)方法解析

    Django多數(shù)據(jù)庫聯(lián)用實現(xiàn)方法解析

    這篇文章主要介紹了Django多數(shù)據(jù)庫聯(lián)用實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python爬取csnd文章并轉(zhuǎn)為PDF文件

    Python爬取csnd文章并轉(zhuǎn)為PDF文件

    這篇文章主要介紹了Python爬取csnd文章并轉(zhuǎn)為PDF文件,通過開發(fā)者工具進(jìn)行抓包分析?分析數(shù)據(jù)從哪里來的,然后發(fā)送請求?對于文章列表頁面發(fā)送請求,獲取數(shù)據(jù)?獲取網(wǎng)頁源代碼,解析數(shù)據(jù)文章的url及文章標(biāo)題,發(fā)送請求?對于文章詳情頁url地址發(fā)送請求,需要的朋友可以參考一下
    2022-01-01
  • python?類型轉(zhuǎn)換函數(shù)示例詳解

    python?類型轉(zhuǎn)換函數(shù)示例詳解

    這篇文章主要介紹了python?類型轉(zhuǎn)換函數(shù)示例詳解,通過float()將一個字符串或數(shù)字轉(zhuǎn)換為浮點數(shù),本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • 關(guān)于WARNING:Ignoring?invalid?distribution?-pencv-python....警告信息的處理方法(已解決!)

    關(guān)于WARNING:Ignoring?invalid?distribution?-pencv-python....

    這篇文章主要給大家介紹了關(guān)于WARNING:Ignoring?invalid?distribution?-pencv-python....警告信息的處理方法,文中通過圖文將解決的辦法介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-03-03

最新評論