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使用os.listdir和os.walk获取文件路径与文件下所有目录的方法)
- python中if判断数据类型(基于python if 判断选择结构的实例详解)
- python中迭代器的作用(Python3.5迭代器与生成器用法实例分析)
- python开启两个线程(Python开启线程,在函数中开线程的实例)
- python中比较同一字典value(在Python 字典中一键对应多个值的实例)
- python函数调用传递数组数据(python调用c++传递数组的实例)
- python如何使用yield(YII2.0框架行为Behavior深入详解)
- python数字形式转换详解(Python3.5实现的罗马数字转换成整数功能示例)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- python中统计文本中单词数的代码(Linux上使用Python统计每天的键盘输入次数)
- python itchat库介绍(Python利用itchat库向好友或者公众号发消息的实例)
- python列表精讲33节(Python列表知识应知应会)
- python交互执行shell脚本(python 利用文件锁单例执行脚本的方法)
- python中for循环计算1-100(python 用for循环实现1~n求和的实例)
- python成绩判断系统(Python根据成绩分析系统浅析)
- python中的多线程详解(python多线程抽象编程模型详解)
- 爱情可以当饭吃吗(怎么回复)
- 高考数学题(高考数学题基础题占多少分)
- 没钱只能吃土(没钱要吃土了幽默短信发朋友圈)
- 今年考高会很难吗(今年高考会考试吗)
- 盘古开天地 他创造了世界,谁创造了盘古 盘古是伏羲吗(盘古开天地他创造了世界)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
热门推荐
- sql根据条件查出两条一样的数据(SQL中遇到多条相同内容只取一条的最简单实现方法)
- 云服务器的巧妙用法(云服务器的技术是如何实现的?)
- mysql数据库主键选择的详解(图文详解MySQL中的主键与事务)
- dedecms的自由列表管理(dedecms TAG标签列表分页链接优化方法)
- MVC中JavaScriptResult
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- 网站怎么样选服务器(网站服务器怎么选?)
- react中state的作用是什么(React中useEffect 与 useLayoutEffect的区别)
- Visual studio中使用VSCommands插件在大括号尾部显示方法或过程名字
- SQL中Between查询日期的问题
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9