Python/Django后端使用PIL Image生成头像缩略图
作者:Lockeyi 发布时间:2021-12-18 09:46:27
标签:Python,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):#使用原图创建缩略图
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})
示例代码中将制作缩略图的函数从基于类的视图中分离出来了(为了清晰起见),实际编程过程中可以定义为类方法方面调用。
来源:https://blog.csdn.net/Lockey23/article/details/80659323


猜你喜欢
- 本文实例讲述了python实现ip代理池功能。分享给大家供大家参考,具体如下:爬取的代理源为西刺代理。用xpath解析页面用telnet来验
- 前言最近在写行为识别的代码,涉及到两个网络的融合,这个融合是有加权的网络结果的融合,所以需要对网络的结果进行加权(相乘)和融合(相加)。最初
- 循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。for循环for循环
- JavaScript Length 字符长度函数,在很多时间我们会用length函数了,因为你得前台判断一个用户输入
- 本文实例讲述了Python爬取需要登录的网站实现方法。分享给大家供大家参考,具体如下:import requestsfrom lxml im
- declare @Table_name varchar(60) set @Table_name = 'Pay_inputpay
- 本文实例为大家分享了python3使用QQ邮箱发邮件的具体代码,供大家参考,具体内容如下直接上代码import smtplibfrom em
- 直接进入正题解析字符串对象我们都知道,JavaScript对象可以序列化为JSON,JSON也可以解析成对象,但是问题是如果出现了一个既不是
- 想大家都做过遮罩层这种常见的功能,css或jquery实现,实现方式多样化,这里http://我介绍我在项目中实现的方式,全屏遮罩,部分区域
- 本文实例讲述了python使用BeautifulSoup分析网页信息的方法。分享给大家供大家参考。具体如下:这段python代码查找网页上的
- 在Mac OS上安装redis首先是安装,它会默认安装到/usr/local/bin下cd /tmpwget http://redis.go
- 我就把我学习Createjs的一些心得体会向大家分享下:一.什么是CreateJS?createjs是一个轻量级的javascript库,是
- 题目请设计并实现一款主机端口扫描程序。程序根据用户输入的域名或IP地址,可以查询该主机的开放的端口号。 例如:并有一定的异常处理参考code
- 前言首先回顾一下什么是事务,事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么
- 在业界,普遍认为Oracle数据库的安全性要比SQL Server数据库高。下面笔者就来谈谈这两种数据库在安全性设计上面的异同。掌握好这些内
- 1、#coding:utf-8chose = [ ('foo',1,2), ('bar
- 本文参考文章,出于学习目的,写本文。开发项目时,为了维护一些经常需要变更的数据,比如数据库的连接信息、请求的url、测试数据等,需要将这些数
- 一,mnist数据集形如上图的数字手写体就是mnist数据集。二,GAN原理(生成对抗网络)GAN网络一共由两部分组成:一个是伪造器(Gen
- 背景App落地页迭代频繁,且需兼容App与各小App,目前是单向前进迭代,会存在以下问题:跳转原生交互;如:某个落地页增加了只有主App的才
- 我的Windows 8.1 环境1.下载安装Python 2.7.6在Python官方网站中下载Python2.7.6的Windows安装包