Django 使用easy_thumbnails压缩上传的图片方法


Posted in Python onJuly 26, 2019

easy_thumbnails:A powerful, yet easy to implement thumbnailing application for Django 1.4+

安装

pip install easy_thumbanils

在你的项目中配置

setting.py INSTALLED_APPS中添加 ‘easy_thumbanils'

如果Django1.7及以上,运行python manage.py migrate easy_thumbnails

否则,运行python manage.py syncdb

在Django中压缩

setting.py

首先,setting中添加

THUMBNAIL_ALIASES = {
 '': {
  'avatar': {'size': (200, 200), 'crop': True},
 },
}

size控制要压缩后的图片大小

创建模型

eg:

models.py

from easy_thumbnails.fields import ThumbnailerImageField

class GoodsImage(models.Model):
 Img = ThumbnailerImageField(upload_to='images/',blank=True)

ThumbnailerImageField在数据库中做的事相当于models.ImageField,不同的是他会告诉esay_thumbnails这是一个要被压缩的图片域。(个人推测)

获取缩略图路径

两种,一是在模板中,二在视图中

模板:

views.py

from models import GoodsImage
def test(request):
 goods = GoodsMessage.objects.all().first() # 查到一个图片
 return render(request,'templates.html',{'img':goods}) # 使用模板

templates.html

{% load thumbnail %} {# 装载easy_thumbnail #}
<img src="/media/{{ img.Img }}"> {# 原图 #}
<img src="/media/{{ img.Img.avatar.url }}"> {# 压缩图 #}

视图

views.py

from easy_thumbnails.files import get_thumbnailer
from models import GoodsImage
def test2(request):
 goods = GoodsImage.objects.all().first()
 path = get_thumbnailer(goods.Img)
 print(path) # 注意,这里查到的是url编码的图片地址
 return HttpResponse(path)

第二种方法,直接查找:

goods = GoodsImage.objects.all().first()
goods.Img # 原图地址
goods.Img['avatar'] # 缩略图地址
goods.Img['avatar'].url # 经url编码后的缩略图地址
# avatar是你在setting.py中的缩略图尺寸名

根据我的观察,只有当第一次使用 GoodsImage.object.*()这种查询的时候,才会生成缩略图,并非在保存原图时就生成了。

此外,使用时候发现当图片表一条记录被删除后,thumbanils的数据表记录不会删除,不过在使用中未发现异常

以上这篇Django 使用easy_thumbnails压缩上传的图片方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中unittest用法实例
Sep 25 Python
Python的Django框架中模板碎片缓存简介
Jul 24 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
Python+Wordpress制作小说站
Apr 14 Python
python中子类调用父类函数的方法示例
Aug 18 Python
通过Python实现自动填写调查问卷
Sep 06 Python
Python编写一个优美的下载器
Apr 15 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
Django中提示消息messages的设置方式
Nov 15 Python
Django接收照片储存文件的实例代码
Mar 07 Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
Feb 05 Python
解决django服务器重启端口被占用的问题
Jul 26 #Python
深入解析神经网络从原理到实现
Jul 26 #Python
python单例模式的多种实现方法
Jul 26 #Python
django的ORM操作 增加和查询
Jul 26 #Python
Django在pycharm下修改默认启动端口的方法
Jul 26 #Python
Python解析命令行读取参数之argparse模块
Jul 26 #Python
Django Rest framework三种分页方式详解
Jul 26 #Python
You might like
php判断ip黑名单程序代码实例
2014/02/24 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
2018/08/19 PHP
详解PHP队列的实现
2019/03/14 PHP
Smarty模板语法详解
2019/07/20 PHP
用 JSON 处理缓存
2007/04/27 Javascript
jquery统计输入文字的个数并对其进行判断
2014/01/07 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
Python实现控制台中的进度条功能代码
2017/12/22 Python
Django Admin实现三级联动的示例代码(省市区)
2018/06/22 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
荷兰鞋子在线:Nelson Schoenen
2017/12/25 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
公司新年寄语
2014/04/04 职场文书
中班幼儿评语大全
2014/04/30 职场文书
尊师重教演讲稿
2014/09/04 职场文书
2014国庆节餐厅促销活动策划方案
2014/09/16 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
生死抉择观后感
2015/06/09 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
聊聊CSS粘性定位sticky案例解析
2022/06/01 HTML / CSS