Python/Django后端使用PIL Image生成頭像縮略圖
更新時間:2019年04月30日 09:16:19 作者:Lockeyi
這篇文章主要為大家詳細介紹了Python/Django后端使用PIL Image生成頭像縮略圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了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):#使用原圖創(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ù)從基于類的視圖中分離出來了(為了清晰起見),實際編程過程中可以定義為類方法方面調用。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
使用python搭建代理IP池實現(xiàn)接口設置與整體調度
在網(wǎng)絡爬蟲中,代理IP池是一個非常重要的組件,由于許多網(wǎng)站對單個IP的請求有限制,因此,我們需要一個代理IP池,在本文中,我們將使用Python來構建一個代理IP池,然后,我們將使用這個代理IP池來訪問我們需要的數(shù)據(jù),文中有相關的代碼示例供大家參考,需要的朋友可以參考下2023-12-12
Python實現(xiàn)指定范圍內篩選并剔除Excel表格中的數(shù)據(jù)
這篇文章主要為大家詳細介紹了Python如何實現(xiàn)在指定范圍內篩選并剔除Excel表格中的數(shù)據(jù),文中的示例代碼講解詳細,感興趣的可以了解一下2023-06-06
OpenCV python sklearn隨機超參數(shù)搜索的實現(xiàn)
這篇文章主要介紹了OpenCV python sklearn隨機超參數(shù)搜索的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01
Python 標準庫zipfile將文件夾加入壓縮包的操作方法
Python zipfile 庫可用于壓縮/解壓 zip 文件. 本文介紹一下如何創(chuàng)建壓縮包,對Python zipfile壓縮包相關知識感興趣的朋友一起看看吧2021-09-09

