最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django 使用 PIL 壓縮圖片的例子

 更新時間:2019年08月16日 16:41:09   作者:兩鬢已不能斑白  
今天小編就為大家分享一篇django 使用 PIL 壓縮圖片的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在最近做項目時,發(fā)現(xiàn)服務(wù)器上的圖片比較大,數(shù)據(jù)傳輸時會消耗很多流量,體驗非常不好。為了緩解這一現(xiàn)象,決定使用gzip壓縮數(shù)據(jù)流,但是發(fā)現(xiàn)gzip對于json數(shù)據(jù)的壓縮效果很好,但對于圖片的壓縮效果很差。無奈,只能寫一段代碼,將服務(wù)器上的圖片挨個壓縮一下。

我的服務(wù)器上的程序,是用django寫的,數(shù)據(jù)庫為sqlite,圖片文件存儲在media目錄下。

先看models.py,只有一個ImageField類型的變量picture,也就是一會壓縮圖片需要用到的變量。

class CrossPicture(models.Model):
  picture = models.ImageField(upload_to='cross_picture', blank=True, null=True)

Python有一個PIL庫,可以處理圖像,壓縮部分的代碼就是用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 壓縮圖片的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中__str__()方法的實用技巧分享

    Python中__str__()方法的實用技巧分享

    在Python編程中,__str__()是一個特殊方法,它允許自定義對象的字符串表示形式,本文將深入探討__str__()的相關(guān)實用技巧,希望對大家有所幫助
    2023-11-11
  • PyQt5實現(xiàn)界面(頁面)跳轉(zhuǎn)的示例代碼

    PyQt5實現(xiàn)界面(頁面)跳轉(zhuǎn)的示例代碼

    這篇文章主要介紹了PyQt5實現(xiàn)界面跳轉(zhuǎn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • django rest framework serializer返回時間自動格式化方法

    django rest framework serializer返回時間自動格式化方法

    這篇文章主要介紹了django rest framework serializer返回時間自動格式化方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 深入了解python中的常見錯誤類型與解決

    深入了解python中的常見錯誤類型與解決

    在Python編程過程中,經(jīng)常會遇到各種錯誤,了解這些錯誤的類型以及如何處理它們是成為一位優(yōu)秀的Python開發(fā)者所必備的技能之一,下面就跟隨小編一起學(xué)習(xí)一下python中的常見錯誤類型吧
    2023-11-11
  • 利用Python實現(xiàn)自動生成小學(xué)生計算題

    利用Python實現(xiàn)自動生成小學(xué)生計算題

    過年期間發(fā)現(xiàn)小外甥已經(jīng)上小學(xué)了,我姐說老師今天給他們布置了寒假作業(yè):每天堅持做乘法和加減法混合運算。這我必須幫幫忙,用Python寫了一段自動生成小學(xué)生計算題的代碼,希望外甥不要太感謝我
    2023-02-02
  • 在django中圖片上傳的格式校驗及大小方法

    在django中圖片上傳的格式校驗及大小方法

    今天小編就為大家分享一篇在django中圖片上傳的格式校驗及大小方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python中處理YAML文件的正確方法

    Python中處理YAML文件的正確方法

    在現(xiàn)代軟件開發(fā)中,YAML(YAML Ain’t Markup Language)因其簡潔和易于閱讀的特性,被廣泛用于配置文件,Python 作為一種流行的編程語言,提供了多種處理 YAML 文件的庫,本文給大家介紹了Python中處理YAML文件的正確方法,需要的朋友可以參考下
    2024-11-11
  • python搭建簡易服務(wù)器分析與實現(xiàn)

    python搭建簡易服務(wù)器分析與實現(xiàn)

    本文將介紹python搭建簡易服務(wù)器實現(xiàn)步驟,需要了解的朋友可以參考下
    2012-12-12
  • python3.8下載及安裝步驟詳解

    python3.8下載及安裝步驟詳解

    這篇文章主要介紹了python3.8下載及安裝步驟詳解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • flask 使用 flask_apscheduler 做定時循環(huán)任務(wù)的實現(xiàn)

    flask 使用 flask_apscheduler 做定時循環(huán)任務(wù)的實現(xiàn)

    這篇文章主要介紹了flask 使用 flask_apscheduler 做定時循環(huán)任務(wù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論

麻栗坡县| 寿宁县| 永福县| 台南县| 芒康县| 正蓝旗| 玉林市| 米易县| 汉源县| 台东市| 门源| 乃东县| 清镇市| 安阳市| 溧水县| 莆田市| 江都市| 同仁县| 错那县| 六安市| 阿坝县| 临汾市| 红安县| 芦溪县| 黄梅县| 竹北市| 陇西县| 莎车县| 巨野县| 东港市| 罗江县| 勃利县| 丰台区| 吴忠市| 修水县| 罗城| 武宣县| 荆州市| 昌宁县| 金川县| 郎溪县|