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中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python 转义字符详细介绍
Mar 21 Python
Python在不同目录下导入模块的实现方法
Oct 27 Python
正确理解Python中if __name__ == '__main__'
Jan 24 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
python使用HTMLTestRunner导出饼图分析报告的方法
Dec 30 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
使用anaconda安装pytorch的实现步骤
Sep 03 Python
python爬虫scrapy图书分类实例讲解
Nov 23 Python
详解Pymongo常用查询方法总结
Jan 29 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php ckeditor上传图片文件名乱码解决方法
2013/11/15 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
JavaScript静态的动态
2006/09/18 Javascript
syntaxhighlighter 使用方法
2007/07/02 Javascript
用JQuery调用Session的实现代码
2010/10/29 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
bootstrap-treeview实现多级树形菜单 后台JSON格式如何组织?
2019/07/26 Javascript
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python中list初始化方法示例
2016/09/18 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
关于责任的演讲稿
2014/05/20 职场文书
雷人标语集锦
2014/06/19 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
2014年卫生监督工作总结
2014/12/09 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
设备技术员岗位职责
2015/04/11 职场文书
关于国庆节的广播稿
2015/08/19 职场文书