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中多线程thread与threading的实现方法
Aug 18 Python
python实现带声音的摩斯码翻译实现方法
May 20 Python
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
python实现画一颗树和一片森林
Jun 25 Python
解决pyttsx3无法封装的问题
Dec 24 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
PyCharm使用Docker镜像搭建Python开发环境
Dec 26 Python
基于python 凸包问题的解决
Apr 16 Python
详解pytorch tensor和ndarray转换相关总结
Sep 03 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
python脚本框架webpy的url映射详解
Nov 20 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静态类
2006/11/25 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
PHP高自定义性安全验证码代码
2011/11/27 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
destoon官方标签大全
2014/06/20 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
Javascript之String对象详解
2016/06/08 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Python中的字符串类型基本知识学习教程
2016/02/04 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
python进阶之自定义可迭代的类
2019/08/20 Python
python 变量初始化空列表的例子
2019/11/28 Python
整理的15个非常有用的 HTML5 开发教程和速查手册
2011/10/18 HTML / CSS
HTML5全屏(Fullscreen)API详细介绍
2015/04/24 HTML / CSS
医药代表个人的求职信分享
2013/12/08 职场文书
给朋友的道歉信
2014/01/09 职场文书
运动会入场解说词300字
2014/01/25 职场文书
支部书记四风对照材料
2014/08/28 职场文书
党支部先进事迹材料
2014/12/24 职场文书
被委托人身份证明
2015/08/07 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
清空 Oracle 安装记录并重新安装
2022/04/26 Oracle