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实现忽略大小写对字符串列表排序的方法
Sep 25 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
Python中的面向对象编程详解(下)
Apr 13 Python
python读写二进制文件的方法
May 09 Python
Python的Flask框架的简介和安装方法
Nov 13 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
分析Python读取文件时的路径问题
Feb 11 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
对python操作kafka写入json数据的简单demo分享
Dec 27 Python
python FTP批量下载/删除/上传实例
Dec 22 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php文件下载处理方法分析
2015/04/22 PHP
PHP数组操作类实例
2015/07/11 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
Node.js+ELK日志规范的实现
2019/05/23 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
将Vue组件库更换为按需加载的方法步骤
2020/05/06 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
2020/10/14 Javascript
Python素数检测实例分析
2015/06/15 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
团日活动总结书格式
2014/05/08 职场文书
会计人员演讲稿
2014/09/11 职场文书
小区门卫的岗位职责
2014/09/26 职场文书
三年级学生评语大全
2014/12/26 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
诗词赏析-(浣溪沙)
2019/08/13 职场文书