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中使用enumerate函数遍历元素实例
Jun 16 Python
使用Python脚本对Linux服务器进行监控的教程
Apr 02 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python编程实现的图片识别功能示例
Aug 03 Python
python 移动图片到另外一个文件夹的实例
Jan 10 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
python自定义时钟类、定时任务类
Feb 22 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
python 多进程和协程配合使用写入数据
Oct 30 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
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php中的strpos使用示例
2014/02/27 PHP
浅谈php和.net的区别
2014/09/28 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
bgsound 背景音乐 的一些常用方法及特殊用法小结
2010/05/11 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
深入浅析vue中cross-env的使用
2019/09/12 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[51:06]DOTA2-DPC中国联赛 正赛 Elephant vs Aster BO3 第二场 1月26日
2021/03/11 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
线程和进程的区别及Python代码实例
2015/02/04 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
python 自定义对象的打印方法
2019/01/12 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
基于Python获取城市近7天天气预报
2019/11/26 Python
django框架forms组件用法实例详解
2019/12/10 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
PHP经典面试题
2016/09/03 面试题
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
后勤工作职责
2013/12/22 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
合同审查法律意见书
2015/06/04 职场文书
python 实现定时任务的四种方式
2021/04/01 Python
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python