您好,登錄后才能下訂單哦!
小編給大家分享一下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"> <h2>更換你的頭像</h2> </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如何實現上傳圖片并縮放作為頭像”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。