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实现中文分词FMM算法实例
Jul 10 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
pandas 实现字典转换成DataFrame的方法
Jul 04 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
详解Python传入参数的几种方法
May 16 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
对python特殊函数 __call__()的使用详解
Jul 02 Python
python递归法实现简易连连看小游戏
Mar 25 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
python 实现aes256加密
Nov 27 Python
python 模块重载的五种方法
Apr 24 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动态创建Web站点的方法
2011/08/14 PHP
深入php var_dump()函数的详解
2013/06/05 PHP
五款PHP代码重构工具推荐
2014/10/14 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
2010年最佳jQuery插件整理
2010/12/06 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
Kathmandu澳洲户外商店:新西兰户外运动品牌
2017/11/12 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
库房主管岗位职责
2013/12/31 职场文书
2014年计生标语
2014/06/23 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
SQLServer RANK() 排名函数的使用
2022/03/23 SQL Server
mysql数据库如何转移到oracle
2022/12/24 MySQL