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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
Python异常处理总结
Aug 15 Python
python函数形参用法实例分析
Aug 04 Python
Python排序算法之选择排序定义与用法示例
Apr 29 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
python实现图片插入文字
Nov 26 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
Python的信号库Blinker用法详解
Dec 31 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的HTTP请求的库Requests实现美女图片墙
2015/02/22 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
自荐书封面下载
2013/11/29 职场文书
高中综合实践活动总结
2014/07/07 职场文书
介绍信范文
2015/01/31 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
诚信教育主题班会
2015/08/13 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python