Python/Django后端使用PIL Image生成頭像縮略圖
本文實(shí)例為大家分享了Python/Django后端使用PIL Image生成頭像縮略圖的具體代碼,供大家參考,具體內(nèi)容如下
import os from django.views.generic import View from myapp.models import User from PIL import Image def make_thumbnail(infile,thumbnail_dir): size = (156, 156) if not os.path.exists(thumbnail_dir):#判斷縮略圖存儲(chǔ)目錄是否存在then新建 os.mkdir(thumbnail_dir) outfile = os.path.join( thumbnail_dir, os.path.basename(infile)) try: im = Image.open(infile)#Key Point im.thumbnail(size)#Key Point im.save(outfile, "JPEG")#Key Point return True except IOError, err: print("cannot create thumbnail for", infile,err) return False class Useravatar(View): def __init__(self): self.thumbnail_dir = os.path.join(STATIC_ROOT, 'avatar/thumbnails') self.dest_dir = os.path.join(STATIC_ROOT, 'avatar/origin_imgs') @method_decorator(login_required) def post(self, request): nt_id = request.session.get('nt_id', 'default') user = User.objects.get(pk=nt_id) if User.objects.filter(pk=nt_id).exists() else None avatarImg = request.FILES['avatar'] if not os.path.exists(self.dest_dir):#判斷原圖存儲(chǔ)目錄是否存在then新建 os.mkdir(self.dest_dir) dest = os.path.join(self.dest_dir, nt_id+"_avatar.jpg") with open(dest, "wb+") as destination:#先保存原圖 for chunk in avatarImg.chunks(): destination.write(chunk) if make_thumb(dest,self.thumbnail_dir):#使用原圖創(chuàng)建縮略圖 avartaPath = os.path.join(STATIC_URL, 'avatar/thumbnails', nt_id + "_avatar.jpg") else: avartaPath = os.path.join(STATIC_URL, 'avatar/origin_imgs', nt_id + "_avatar.jpg") User.objects.filter(nt_id=nt_id).update(avatar=avartaPath) return render(request, 'profile.html', {'user': user})
示例代碼中將制作縮略圖的函數(shù)從基于類的視圖中分離出來(lái)了(為了清晰起見(jiàn)),實(shí)際編程過(guò)程中可以定義為類方法方面調(diào)用。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)隨機(jī)從圖像中獲取多個(gè)patch
經(jīng)常有一些圖像任務(wù)需要從一張大圖中截取固定大小的patch來(lái)進(jìn)行訓(xùn)練。本文就來(lái)和大家聊聊如何用Python實(shí)現(xiàn)隨機(jī)從圖像中獲取多個(gè)patch,感興趣的可以了解一下2022-08-08使用python搭建代理IP池實(shí)現(xiàn)接口設(shè)置與整體調(diào)度
在網(wǎng)絡(luò)爬蟲(chóng)中,代理IP池是一個(gè)非常重要的組件,由于許多網(wǎng)站對(duì)單個(gè)IP的請(qǐng)求有限制,因此,我們需要一個(gè)代理IP池,在本文中,我們將使用Python來(lái)構(gòu)建一個(gè)代理IP池,然后,我們將使用這個(gè)代理IP池來(lái)訪問(wèn)我們需要的數(shù)據(jù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12Python實(shí)現(xiàn)指定范圍內(nèi)篩選并剔除Excel表格中的數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)在指定范圍內(nèi)篩選并剔除Excel表格中的數(shù)據(jù),文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-06-06python讀csv文件時(shí)指定行為表頭或無(wú)表頭的方法
這篇文章主要介紹了python讀csv文件時(shí)指定行為表頭或無(wú)表頭的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06OpenCV python sklearn隨機(jī)超參數(shù)搜索的實(shí)現(xiàn)
這篇文章主要介紹了OpenCV python sklearn隨機(jī)超參數(shù)搜索的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01Python 實(shí)用技巧之利用Shell通配符做字符串匹配
這篇文章主要介紹了Python 實(shí)用技巧之利用Shell通配符做字符串匹配的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08Python 標(biāo)準(zhǔn)庫(kù)zipfile將文件夾加入壓縮包的操作方法
Python zipfile 庫(kù)可用于壓縮/解壓 zip 文件. 本文介紹一下如何創(chuàng)建壓縮包,對(duì)Python zipfile壓縮包相關(guān)知識(shí)感興趣的朋友一起看看吧2021-09-09python查看矩陣的行列號(hào)以及維數(shù)方式
這篇文章主要介紹了python查看矩陣的行列號(hào)以及維數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05