django 使用 PIL 壓縮圖片的例子
在最近做項(xiàng)目時(shí),發(fā)現(xiàn)服務(wù)器上的圖片比較大,數(shù)據(jù)傳輸時(shí)會(huì)消耗很多流量,體驗(yàn)非常不好。為了緩解這一現(xiàn)象,決定使用gzip壓縮數(shù)據(jù)流,但是發(fā)現(xiàn)gzip對(duì)于json數(shù)據(jù)的壓縮效果很好,但對(duì)于圖片的壓縮效果很差。無奈,只能寫一段代碼,將服務(wù)器上的圖片挨個(gè)壓縮一下。
我的服務(wù)器上的程序,是用django寫的,數(shù)據(jù)庫(kù)為sqlite,圖片文件存儲(chǔ)在media目錄下。
先看models.py,只有一個(gè)ImageField類型的變量picture,也就是一會(huì)壓縮圖片需要用到的變量。
class CrossPicture(models.Model): picture = models.ImageField(upload_to='cross_picture', blank=True, null=True)
Python有一個(gè)PIL庫(kù),可以處理圖像,壓縮部分的代碼就是用PIL寫的
def compressImage(request): picture_list = models.CrossPicture.objects.all() for cp in picture_list: image = Image.open(cp.picture) # 通過cp.picture 獲得圖像 width = image.width height = image.height rate = 1.0 # 壓縮率 # 根據(jù)圖像大小設(shè)置壓縮率 if width >= 2000 or height >= 2000: rate = 0.3 elif width >= 1000 or height >= 1000: rate = 0.5 elif width >= 500 or height >= 500: rate = 0.9 width = int(width * rate) # 新的寬 height = int(height * rate) # 新的高 image.thumbnail((width, height), Image.ANTIALIAS) # 生成縮略圖 image.save('media/' + str(cp.picture), 'JPEG') # 保存到原路徑 cp.save() return HttpResponse('compress ok')
以上這篇django 使用 PIL 壓縮圖片的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用Numba與Cython結(jié)合提升python運(yùn)行效率詳解
近些年來, Numba和Cython在數(shù)學(xué)科學(xué)界得到了廣泛的關(guān)注。它們都提供了一種加速CPU密集型任務(wù)的方法,但以不同的方式。本文描述了它們之間體系結(jié)構(gòu)的差異2021-09-09Python本地cache不當(dāng)使用導(dǎo)致內(nèi)存泄露的問題分析與解決
最近在項(xiàng)目開發(fā)中遇到了本地cache不當(dāng)使用導(dǎo)致的一個(gè)內(nèi)存泄露問題,所以本文主要分析了問題出現(xiàn)的原因已經(jīng)解決方法,需要的小伙伴可以參考下2023-08-08python中編寫config文件并及時(shí)更新的方法
在pytorch或者其他深度學(xué)習(xí)框架中,有許多超參數(shù)需要調(diào)整,包括learning_rate,training_data_path等,因此編寫一個(gè)config文件統(tǒng)一存放這些參數(shù),方便調(diào)用/查看/修改還是很有必要,這篇文章主要介紹了python中一種編寫config文件并及時(shí)更新的方法,需要的朋友可以參考下2023-02-02jupyter notebook實(shí)現(xiàn)顯示行號(hào)
這篇文章主要介紹了jupyter notebook實(shí)現(xiàn)顯示行號(hào),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python cookielib 登錄人人網(wǎng)的實(shí)現(xiàn)代碼
今天晚上不是很忙,所以早早的就在電腦的旁邊開始寫東西了。我今天給大家分享一個(gè)我自己用python寫的自動(dòng)登錄 人人網(wǎng)的腳本,沒辦法就是懶!懶的輸入帳號(hào)和密碼,讓python給我們減少工作量2012-12-12Django框架自定義模型管理器與元選項(xiàng)用法分析
這篇文章主要介紹了Django框架自定義模型管理器與元選項(xiàng)用法,結(jié)合實(shí)例形式分析了自定義模型管理器與元選項(xiàng)的功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-07-07Python異常模塊traceback用法實(shí)例分析
這篇文章主要介紹了Python異常模塊traceback用法,結(jié)合實(shí)例形式分析了Python異常模塊traceback的基本功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-10-10python數(shù)據(jù)封裝json格式數(shù)據(jù)
本次內(nèi)容是小編在網(wǎng)上整理的關(guān)于如何python數(shù)據(jù)封裝json格式的內(nèi)容總結(jié),有興趣的讀者們參考下。2018-03-03