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 相关文章推荐
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
Python 模板引擎的注入问题分析
Jan 01 Python
python 中split 和 strip的实例详解
Jul 12 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
python的set处理二维数组转一维数组的方法示例
May 31 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
django中瀑布流写法实例代码
Oct 14 Python
opencv+python实现均值滤波
Feb 19 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 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
德劲1107的电路分析与打磨
2021/03/02 无线电
在VS2008中编译MYSQL5.1.48的方法
2010/07/03 PHP
php 搜索框提示(自动完成)实例代码
2012/02/05 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
比较简单的一个符合web标准的JS调用flash方法
2007/11/29 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
Python标准库之Sys模块使用详解
2015/05/23 Python
Python三级目录展示的实现方法
2016/09/28 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
python实现共轭梯度法
2019/07/03 Python
Python @property使用方法解析
2019/09/17 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Currentbody澳大利亚:美容仪专家
2019/11/11 全球购物
高级文秘工作总结的自我评价
2013/09/28 职场文书
工程招投标邀请书
2014/01/30 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
2014年稽查工作总结
2014/12/20 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang
Python初识逻辑与if语句及用法大全
2021/08/07 Python
Java 实现限流器处理Rest接口请求详解流程
2021/11/02 Java/Android
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python