中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何對gif圖壓縮

發布時間:2021-11-02 11:44:58 來源:億速云 閱讀:377 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關python如何對gif圖壓縮,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    1. 背景:

    最近寫了一篇CSDN博客需要上傳gif圖,發現大小超過了5M,無法上傳。

    文件大小:

    python如何對gif圖壓縮

    python如何對gif圖壓縮

    本想自己找個免費的壓縮工具,結果下載下來的工具不是釣魚工具就是流氓軟件,還有的在線壓縮工具說是免費,等你download的時候說是要付費,總之一大堆坑。

    2.尋找解決辦法

    由于上面坑爹的經過,于是我自己試著找找python壓縮gif的辦法。

    2.1可行性分析

    根據我的理解是可行的,因為gif的文件是根據一幀幀靜態圖片根據時序拼接起來的,如果使用python將gif文件分解成一幀幀靜態圖片的話,再將靜態圖片對象進行壓縮之后再合并,理論上是可以減小文件大小。

    3.問題分解

    3.1將gif文件分解

    需要找到一個可以將gif文件分解成靜態圖像的庫,了解到PIL的ImageSequence可以將gif分解成一幀幀。

    3.1.1示例代碼
    from PIL import Image, ImageSequence
    filename = "2018-0.gif"
    gif = Image.open(filename)
    index = 0
    for frame in ImageSequence.Iterator(gif):
    	#frame.convert('RGB')
    	frame.save(str(index)+'.png')#pass
    	index += 1
    3.1.2 效果圖

    python如何對gif圖壓縮

    4.代碼優化

    代碼很簡單

    import imageio
    from PIL import Image, ImageSequence
    
    def compressGif(filename):
        gif = Image.open(filename)
        if not gif.is_animated:
            return False
        imageio.mimsave('compress-'+filename, [frame.convert('RGB') for frame in ImageSequence.Iterator(gif)], duration = gif.info['duration']/2000) 
    
    fileList = ["2018-0.gif","2018-1.gif","2018-2.gif","2018-3.gif","2018-4.gif"]
    for filename in fileList:
        compressGif(filename)

    5.做成一個通用工具

    5.1創建一個虛擬環境

    mkvirtualenv GIF

    python如何對gif圖壓縮

    5.2虛擬環境安裝必要庫

    pip install imageio

    pip install pyinstaller 打包必備的庫

    5.3打包

    pyinstaller -F compress.py

    python如何對gif圖壓縮

    5.4把.gif文件放到compress.exe文件夾下

    python如何對gif圖壓縮

    5.5雙擊.exe查看打包效果

    python如何對gif圖壓縮

    5.6壓縮后的圖片效果

    可以看到壓縮之后圖片依然很清晰

    壓縮率: 5356/1504 = 3.56

    這個壓縮率已經非常高了

    python如何對gif圖壓縮

    關于“python如何對gif圖壓縮”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    新源县| 顺昌县| 临桂县| 都匀市| 淳化县| 沂水县| 伽师县| 卢氏县| 竹北市| 辽源市| 西华县| 连山| 鄂伦春自治旗| 嘉兴市| 嘉鱼县| 禄劝| 台北县| 岢岚县| 将乐县| 荥阳市| 廊坊市| 来安县| 修水县| 卫辉市| 淮安市| 灌云县| 乌鲁木齐市| 突泉县| 深泽县| 靖远县| 陇川县| 芦溪县| 铁岭县| 合山市| 顺义区| 孟连| 泾川县| 达拉特旗| 榕江县| 农安县| 徐汇区|