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中os操作文件及文件路径实例汇总
Jan 15 Python
Python中字符串对齐方法介绍
May 21 Python
使用Python写一个小游戏
Apr 02 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
Python画柱状统计图操作示例【基于matplotlib库】
Jul 04 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
详解Python可视化神器Yellowbrick使用
Nov 11 Python
python使用配置文件过程详解
Dec 28 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
关于python中模块和重载的问题
Nov 02 Python
Python Flask实现进度条
May 11 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
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
PHP输出缓冲控制Output Control系列函数详解
2015/07/02 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
2016/05/04 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
一种JavaScript的设计模式
2006/11/22 Javascript
豆瓣网的jquery代码实例
2008/06/15 Javascript
JS 类型转换常见方法小结
2010/05/31 Javascript
js中if语句的几种优化代码写法
2011/03/12 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
[01:46]TI4西雅图DOTA2前线报道 中国选手抱团调时差
2014/07/08 DOTA
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
2019/10/30 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
PHP面试题附答案
2015/11/28 面试题
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
2012/11/25 面试题
酒店管理毕业生自荐信
2013/10/24 职场文书
水电工岗位职责
2014/02/12 职场文书
浪费资源的建议书
2014/03/12 职场文书
教师个人读书活动总结
2014/07/08 职场文书
代领毕业证委托书
2014/08/02 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
2014年创卫工作总结
2014/11/24 职场文书
高中社区服务活动报告
2015/02/05 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书