Python/Django后端使用PIL Image生成头像缩略图


Posted in Python onApril 30, 2019

本文实例为大家分享了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 相关文章推荐
如何在Python函数执行前后增加额外的行为
Oct 20 Python
详解python之简单主机批量管理工具
Jan 27 Python
python 调用win32pai 操作cmd的方法
May 28 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
python实现简单淘宝秒杀功能
May 03 Python
Python将文本去空格并保存到txt文件中的实例
Jul 24 Python
python中的print()输出
Apr 12 Python
谈一谈基于python的面向对象编程基础
May 21 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
Apr 14 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 #Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 #Python
Django学习笔记之为Model添加Action
Apr 30 #Python
Python Opencv实现图像轮廓识别功能
Mar 23 #Python
python opencv实现图像边缘检测
Apr 29 #Python
Python Django给admin添加Action的方法实例详解
Apr 29 #Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 #Python
You might like
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
三级下拉菜单的js实现代码
2011/05/23 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
javascript iframe跨域详解
2016/10/26 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
Python学习笔记之常用函数及说明
2014/05/23 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
python中os包的用法
2020/06/01 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
人事主管岗位职责
2014/01/30 职场文书
迟到早退检讨书
2014/02/10 职场文书
法律六进活动方案
2014/03/13 职场文书
幼儿教师求职信
2014/05/24 职场文书
学习型班组申报材料
2014/05/31 职场文书
品牌服务方案
2014/06/03 职场文书
课外活动总结范文
2014/07/09 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
婚宴领导致辞
2015/07/28 职场文书