Python/Django后端使用PIL Image生成頭像縮略圖
更新時間:2019年04月30日 09:16:19 作者:Lockeyi
這篇文章主要為大家詳細介紹了Python/Django后端使用PIL Image生成頭像縮略圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了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):#判斷縮略圖存儲目錄是否存在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):#使用原圖創(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ù)從基于類的視圖中分離出來了(為了清晰起見),實際編程過程中可以定義為類方法方面調(diào)用。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
用python實現(xiàn)一個簡單計算器(完整DEMO)
這篇文章主要介紹了用python實現(xiàn)一個簡單計算器(完整DEMO),需要的朋友可以參考下2020-10-10
對python numpy.array插入一行或一列的方法詳解
今天小編就為大家分享一篇對python numpy.array插入一行或一列的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python實現(xiàn)發(fā)送帶有pdf附件的電子郵件
使用Python發(fā)郵件,是個簡單的話題,可是如何可以優(yōu)雅的輕松的群發(fā)郵件,并附加PDF附件,是很多小伙伴的日常工作。本文就來和大家分享一下實現(xiàn)方法,需要的可以參考一下2023-02-02
一個非常簡單好用的Python圖形界面庫(PysimpleGUI)
這篇文章主要介紹了一個非常簡單好用的Python圖形界面庫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12

