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

python對gif圖壓縮的完美解決方案

 更新時間:2021年11月02日 09:56:52   作者:Rambo.Fan  
上圖圖片的時候由于圖片太大,導(dǎo)致上次不成功,因此需要對文件進(jìn)行統(tǒng)一壓縮,這篇文章主要給大家介紹了關(guān)于python對gif圖壓縮的完美解決方案,需要的朋友可以參考下

1. 背景:

最近寫了一篇CSDN博客需要上傳gif圖,發(fā)現(xiàn)大小超過了5M,無法上傳。

文件大小:

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

2.尋找解決辦法

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

2.1可行性分析

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

3.問題分解

3.1將gif文件分解

需要找到一個可以將gif文件分解成靜態(tài)圖像的庫,了解到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 效果圖

4.代碼優(yōu)化

代碼很簡單

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創(chuàng)建一個虛擬環(huán)境

mkvirtualenv GIF

5.2虛擬環(huán)境安裝必要庫

pip install imageio

pip install pyinstaller 打包必備的庫

5.3打包

pyinstaller -F compress.py

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

5.5雙擊.exe查看打包效果

5.6壓縮后的圖片效果

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

壓縮率: 5356/1504 = 3.56

這個壓縮率已經(jīng)非常高了

總結(jié)

到此這篇關(guān)于python對gif圖壓縮的完美解決方案的文章就介紹到這了,更多相關(guān)python對gif圖壓縮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的Request請求重試機(jī)制

    Python中的Request請求重試機(jī)制

    這篇文章主要介紹了Python中的Request請求重試機(jī)制,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python?time模塊時間獲取和轉(zhuǎn)換方法

    Python?time模塊時間獲取和轉(zhuǎn)換方法

    這篇文章主要介紹了Python?time模塊時間獲取和轉(zhuǎn)換,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • jupyter notebook 多環(huán)境conda kernel配置方式

    jupyter notebook 多環(huán)境conda kernel配置方式

    這篇文章主要介紹了jupyter notebook 多環(huán)境conda kernel配置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python隨機(jī)數(shù)模塊詳情

    Python隨機(jī)數(shù)模塊詳情

    這篇文章主要介紹了Python隨機(jī)數(shù)模塊,隨機(jī)數(shù)模塊實現(xiàn)了各種分布的偽隨機(jī)數(shù)生成器。對于整數(shù),從范圍中有統(tǒng)一的選擇。 對于序列,存在隨機(jī)元素的統(tǒng)一選擇、用于生成列表的隨機(jī)排列的函數(shù)、以及用于隨機(jī)抽樣而無需替換的函數(shù),下文來看看詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 詳解python websocket獲取實時數(shù)據(jù)的幾種常見鏈接方式

    詳解python websocket獲取實時數(shù)據(jù)的幾種常見鏈接方式

    這篇文章主要介紹了詳解python websocket獲取實時數(shù)據(jù)的幾種常見鏈接方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python Web項目Cherrypy使用方法鏡像

    Python Web項目Cherrypy使用方法鏡像

    這篇文章主要介紹了Python Web項目Cherrypy使用方法鏡像,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • Python實現(xiàn)LSTM學(xué)習(xí)的三維軌跡

    Python實現(xiàn)LSTM學(xué)習(xí)的三維軌跡

    這篇文章主要為大家詳細(xì)介紹了如何使用LSTM來學(xué)習(xí)和預(yù)測三維軌跡,并提供詳細(xì)的Python實現(xiàn)示例,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • 從零學(xué)python系列之教你如何根據(jù)圖片生成字符畫

    從零學(xué)python系列之教你如何根據(jù)圖片生成字符畫

    網(wǎng)上有很多的字符畫,看起來很炫酷,下面就告訴你如何用Python做這么炫酷的事,
    2014-05-05
  • Pandas時間序列:重采樣及頻率轉(zhuǎn)換方式

    Pandas時間序列:重采樣及頻率轉(zhuǎn)換方式

    今天小編就為大家分享一篇Pandas時間序列:重采樣及頻率轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python3安裝tensorflow及配置過程

    Python3安裝tensorflow及配置過程

    TensorFlow 是一個端到端開源機(jī)器學(xué)習(xí)平臺,能夠幫助開發(fā)者快速輕松的構(gòu)建和部署由機(jī)器學(xué)習(xí)提供應(yīng)用,對Python3安裝tensorflow的相關(guān)知識感興趣的朋友一起學(xué)習(xí)下吧
    2021-05-05

最新評論

三江| 岳池县| 德庆县| 张家界市| 科尔| 栾城县| 兖州市| 西青区| 金平| 花莲县| 周宁县| 漳平市| 萨迦县| 比如县| 宣武区| 山阴县| 兴和县| 新巴尔虎右旗| 永嘉县| 庐江县| 中卫市| 那曲县| 当雄县| 色达县| 郓城县| 龙井市| 社会| 蓝山县| 溧阳市| 石河子市| 始兴县| 兰西县| 石泉县| 孝感市| 齐河县| 五台县| 遂平县| 沧州市| 监利县| 临沧市| 义乌市|