您好,登錄后才能下訂單哦!
小編給大家分享一下Python/Django后端如何使用PIL Image生成頭像縮略圖,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
具體內容如下
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):#判斷縮略圖存儲目錄是否存在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):#判斷原圖存儲目錄是否存在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):#使用原圖創建縮略圖 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})
示例代碼中將制作縮略圖的函數從基于類的視圖中分離出來了(為了清晰起見),實際編程過程中可以定義為類方法方面調用。
看完了這篇文章,相信你對“Python/Django后端如何使用PIL Image生成頭像縮略圖”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。