91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

    安图县| 黄骅市| 金坛市| 湖州市| 正宁县| 镇原县| 会昌县| 垣曲县| 岳池县| 长岭县| 麻阳| 台山市| 太仆寺旗| 河源市| 化德县| 梓潼县| 英德市| 家居| 高淳县| 买车| 赤峰市| 屏南县| 莒南县| 广东省| 丹巴县| 巴楚县| 吉木乃县| 朔州市| 九江县| 尚志市| 高阳县| 衢州市| 沽源县| 大埔区| 焉耆| 建平县| 皮山县| 鲁甸县| 长寿区| 连云港市| 瓦房店市|