Django 使用easy_thumbnails壓縮上傳的圖片方法
easy_thumbnails:A powerful, yet easy to implement thumbnailing application for Django 1.4+
安裝
pip install easy_thumbanils
在你的項(xiàng)目中配置
setting.py INSTALLED_APPS中添加 ‘easy_thumbanils'
如果Django1.7及以上,運(yùn)行python manage.py migrate easy_thumbnails
否則,運(yùn)行python manage.py syncdb
在Django中壓縮
setting.py
首先,setting中添加
THUMBNAIL_ALIASES = { '': { 'avatar': {'size': (200, 200), 'crop': True}, }, }
size控制要壓縮后的圖片大小
創(chuàng)建模型
eg:
models.py
from easy_thumbnails.fields import ThumbnailerImageField class GoodsImage(models.Model): Img = ThumbnailerImageField(upload_to='images/',blank=True)
ThumbnailerImageField在數(shù)據(jù)庫(kù)中做的事相當(dāng)于models.ImageField,不同的是他會(huì)告訴esay_thumbnails這是一個(gè)要被壓縮的圖片域。(個(gè)人推測(cè))
獲取縮略圖路徑
兩種,一是在模板中,二在視圖中
模板:
views.py
from models import GoodsImage def test(request): goods = GoodsMessage.objects.all().first() # 查到一個(gè)圖片 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 # 經(jīng)url編碼后的縮略圖地址 # avatar是你在setting.py中的縮略圖尺寸名
根據(jù)我的觀察,只有當(dāng)?shù)谝淮问褂?GoodsImage.object.*()這種查詢(xún)的時(shí)候,才會(huì)生成縮略圖,并非在保存原圖時(shí)就生成了。
此外,使用時(shí)候發(fā)現(xiàn)當(dāng)圖片表一條記錄被刪除后,thumbanils的數(shù)據(jù)表記錄不會(huì)刪除,不過(guò)在使用中未發(fā)現(xiàn)異常
以上這篇Django 使用easy_thumbnails壓縮上傳的圖片方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 實(shí)現(xiàn)二叉搜索樹(shù)的四種方法
本文主要介紹了python 實(shí)現(xiàn)二叉搜索樹(shù)的四種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04matplotlib共享坐標(biāo)軸的實(shí)現(xiàn)(X或Y坐標(biāo)軸)
在作圖的過(guò)程中,我們經(jīng)常會(huì)遇到子圖共用坐標(biāo)軸的情況,或是共用橫軸標(biāo)軸,也可能是縱坐標(biāo)軸。本文就介紹了matplotlib共享坐標(biāo)軸,感興趣的可以了解一下2021-05-05對(duì)Xpath 獲取子標(biāo)簽下所有文本的方法詳解
今天小編就為大家分享一篇對(duì)Xpath 獲取子標(biāo)簽下所有文本的方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python 機(jī)器學(xué)習(xí)之線(xiàn)性回歸詳解分析
回歸是監(jiān)督學(xué)習(xí)的一個(gè)重要問(wèn)題,回歸用于預(yù)測(cè)輸入變量和輸出變量之間的關(guān)系,特別是當(dāng)輸入變量的值發(fā)生變化時(shí),輸出變量的值也隨之發(fā)生變化?;貧w模型正是表示從輸入變量到輸出變量之間映射的函數(shù)2021-11-11讓Django支持Sql Server作后端數(shù)據(jù)庫(kù)的方法
今天小編就為大家分享一篇讓Django支持Sql Server作后端數(shù)據(jù)庫(kù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05Python?selenium?get_cookies獲取cookie不全的解決方案
之前使用爬蟲(chóng)時(shí)最讓我頭疼的就是cookie失效的問(wèn)題了,下面這篇文章主要給大家介紹了關(guān)于Python?selenium?get_cookies獲取cookie不全的解決方案,需要的朋友可以參考下2022-10-10