pythonimage库(Python/Django后端使用PIL Image生成头像缩略图)
类别:脚本大全 浏览量:2432
时间:2021-10-11 00:03:14 pythonimage库
Python/Django后端使用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抽奖转盘代码(详解python--模拟轮盘抽奖游戏)
- python模块使用方法(详解python的argpare和click模块小结)
- pythonselenium查看当前页面元素(python+selenium 定位到元素,无法点击的解决方法)
- python教程第126节(Python 学习教程之networkx)
- nginxpython编写模块(Python开发之Nginx+uWSGI+virtualenv多项目部署教程)
- python第三方库的使用方法和作用(Python第三方库face_recognition在windows上的安装过程)
- python什么是深拷贝什么是浅拷贝(Python深拷贝与浅拷贝用法实例分析)
- python中怎么查看函数的用法(Python中函数的基本定义与调用及内置函数详解)
- python turtle简易绘图(详解Python使用Plotly绘图工具,绘制甘特图)
- python中比较同一字典value(在Python 字典中一键对应多个值的实例)
- python pyqt 教程(Python+PyQt5实现美剧爬虫可视工具的方法)
- python用指针合并两个有序数组(Python3实现计算两个数组的交集算法示例)
- python图书馆管理系统源码(python实现图书借阅系统)
- python中for循环计算1-100(python 用for循环实现1~n求和的实例)
- python单例编程(浅谈Python反射 & 单例模式)
- python 接口测试怎么校验json数据(python接口自动化十七--Json 数据处理---一次爬坑记详解)
- 息烽 这个村 治垃圾 有招 人人争当卫生模范(息烽这个村治垃圾)
- 今天要吃什么(今天要吃什么菜)
- 三杨之一 南杨 杨溥 安贞履节,酿醴调羹,宰相之气(三杨之一南杨杨溥)
- 今天会下雨吗(今天会下雨吗小说)
- 追连续剧,品古今联4 明代三杨,联妙诗佳(追连续剧品古今联4)
- 三杨 共辅四朝帝王,构建明帝国内阁行政圈(三杨共辅四朝帝王)
热门推荐
- iframe嵌入页面高度自动适应
- laravel时间日期字段比较(Laravel find in set排序实例)
- js中alert相关知识点(js中getBoundingClientRect 方法案例详解)
- dedecms采集插件(dedecms 软件下载模块加入flashget快车下载代码)
- mysql5.7.36详细安装(CenOS6.7下mysql 8.0.22 安装配置方法图文教程)
- dede内容模型管理(Dede网站修改模板路径的方法 拒绝模板泄漏被盗)
- dedecms目录说明(DedeCms获取当前页面URL地址的实现方法)
- 阿里云几个服务器可以备案(阿里云服务器网站备案简单流程说明文档)
- 什么是ftp和sftp(浅谈 FTP、FTPS 与 SFTP的区别)
- 织梦dede怎么获取当前文档的网址(比较详细全面的织梦DEDECMS目录结构说明)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9