您好,登錄后才能下訂單哦!
今天小編給大家分享一下怎么用Python實現無損GIF動圖的制作的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
調用python庫imageio可以輕松實現
讀取靜態圖到列表中 ,作為 GIF 動圖的每一幀
設置每一幀間隔時間duration,我設置為1.15秒
調用imageio庫的函數imageio.mimsave即可
實現代碼
import imageio def create_gif(image_list, gif_name, duration=0.35): frames = [] for image_name in image_list: frames.append(imageio.imread(image_name)) imageio.mimsave(gif_name, frames, 'GIF', duration=duration) return def main(): image_list = ['car/10.jpg','car/15.jpg','car/8.jpg',] gif_name = 'car/car.gif' duration = 1.15 create_gif(image_list, gif_name, duration) if __name__ == '__main__': main()
By the way
我原來制作GIF用的是軟件ScreenToGif,它錄制出來的動圖真大,編輯有些卡頓,不用它了
前面的GIF動圖是壓縮后的,只有3M多,原大小接近50MB。
如果不壓縮,小伙伴們需要浪費50M的流量下載。
資源是可貴的,先用收藏的網頁壓縮試下
壓縮之后仍有20多M,質量有損失,且沒有壓縮比參數可選。
還是python好,有免費的模塊,省去網上找這些要注冊的資源
使用ImageIo 和PIL庫,對gif動圖進行壓縮處理,先導入
import imageio from PIL import Image, ImageSequence
設置壓縮尺寸,這里設置壓縮尺寸為1000
rp = 1000
50M壓縮之后大小降到4M,如果設置為500,壓縮完不到1M
接下來的代碼如下
img_list = [] # 讀取原gif動圖 img = Image.open("car/car.gif") # 對原動圖進行壓縮,并存入img_list for i in ImageSequence.Iterator(img): i = i.convert('RGB') if max(i.size[0], i.size[1]) > rp: i.thumbnail((rp, rp)) img_list.append(i) # 計算幀的頻率 durt = (img.info)['duration'] / 1000 # 讀取img_list合成新的gif imageio.mimsave('car/car1.gif', img_list, duration=durt )
壓縮完成后,就是3.51MB,這縮小的不是一點點,而且無損展示
以上就是“怎么用Python實現無損GIF動圖的制作”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。