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的闭包和装饰器
Feb 26 Python
浅析python中的分片与截断序列
Aug 09 Python
python实现dijkstra最短路由算法
Jan 17 Python
Python实现查找二叉搜索树第k大的节点功能示例
Jan 24 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
python根据多个文件名批量查找文件
Aug 13 Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 Python
python文件操作的简单方法总结
Nov 07 Python
Python django搭建layui提交表单,表格,图标的实例
Nov 18 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
详解Open Folder as PyCharm Project怎么添加的方法
Dec 29 Python
python playwrigh框架入门安装使用
Jul 23 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高级编程-函数-郑阿奇
2011/07/04 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
JS与jQuery实现隔行变色的方法
2016/09/09 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[04:45]DOTA2上海特级锦标赛主赛事第四日RECAP
2016/03/06 DOTA
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
python3生成随机数实例
2014/10/20 Python
Python使用爬虫猜密码
2016/02/19 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
什么是Python中的匿名函数
2020/06/02 Python
资深生产主管自我评价
2013/09/22 职场文书
军训感想500字
2014/02/20 职场文书
《大作家的小老师》教学反思
2014/04/16 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/10/28 职场文书
介绍信如何写
2015/01/31 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
CSS的calc函数用法小结
2022/06/25 HTML / CSS
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android