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

yipeiwu_com7年前Python基础

本文实例为大家分享了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自动化部署工具Fabric的简单上手指南

Fabric 是基于 SSH 协议的 Python 工具,相比传统的 ssh/scp 方式,用 Python 的语法写管理命令更易读也更容易扩展,管理单台或者多台机器犹如本地操作一般。...

Python3.7实现中控考勤机自动连接

由于考勤机与OA对接,OA会在每天定时取考勤机数据,但是需要考勤机是连接状态,所以搜索了下相关教程,写了个脚本自动连接。完全是个Python小白,代码烂,仅作为笔记。 理论上支持所有程序...

Python使用itchat 功能分析微信好友性别和位置

Python使用itchat 功能分析微信好友性别和位置

这样就将你所有微信好友的信息都返回了,我们并不需要这么多的信息,我们选取一些信息存储到 csv 文件中 注意:返回的信息是一个 list,其中第一个是我自己的信息,所以要从第二项开始...

python 数据的清理行为实例详解

python 数据的清理行为实例详解 数据清洗主要是指填充缺失数据,消除噪声数据等操作,主要还是通过分析“脏数据”产生的原因和存在形式,利用现有的数据挖掘手段去清洗“脏数据”,然后转化为...

一篇文章搞定Python操作文件与目录

一篇文章搞定Python操作文件与目录

前言 文件和目录操作是很常见的功能,这里做个简单的总结,包括注意事项和实际的实现代码,基本日常开发都够用了 目录操作 判断目录或是文件是否存在 os.path.exists(p...