溫馨提示×

溫馨提示×

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

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

怎么用Python實(shí)現(xiàn)無損GIF動(dòng)圖的制作

發(fā)布時(shí)間:2023-05-06 14:49:33 來源:億速云 閱讀:142 作者:zzz 欄目:開發(fā)技術(shù)

今天小編給大家分享一下怎么用Python實(shí)現(xiàn)無損GIF動(dòng)圖的制作的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

生成gif圖

調(diào)用python庫imageio可以輕松實(shí)現(xiàn)

讀取靜態(tài)圖到列表中 ,作為 GIF 動(dòng)圖的每一幀

設(shè)置每一幀間隔時(shí)間duration,我設(shè)置為1.15秒

調(diào)用imageio庫的函數(shù)imageio.mimsave即可

實(shí)現(xiàn)代碼

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,它錄制出來的動(dòng)圖真大,編輯有些卡頓,不用它了

無損壓縮

前面的GIF動(dòng)圖是壓縮后的,只有3M多,原大小接近50MB。

如果不壓縮,小伙伴們需要浪費(fèi)50M的流量下載。

資源是可貴的,先用收藏的網(wǎng)頁壓縮試下

壓縮之后仍有20多M,質(zhì)量有損失,且沒有壓縮比參數(shù)可選。

還是python好,有免費(fèi)的模塊,省去網(wǎng)上找這些要注冊的資源

使用ImageIo 和PIL庫,對gif動(dòng)圖進(jìn)行壓縮處理,先導(dǎo)入

import imageio
from PIL import Image, ImageSequence

設(shè)置壓縮尺寸,這里設(shè)置壓縮尺寸為1000

rp = 1000

50M壓縮之后大小降到4M,如果設(shè)置為500,壓縮完不到1M

接下來的代碼如下

img_list = []

# 讀取原gif動(dòng)圖
img = Image.open("car/car.gif")

# 對原動(dòng)圖進(jìn)行壓縮,并存入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)

# 計(jì)算幀的頻率
durt = (img.info)['duration'] / 1000

# 讀取img_list合成新的gif
imageio.mimsave('car/car1.gif', img_list, duration=durt )

壓縮完成后,就是3.51MB,這縮小的不是一點(diǎn)點(diǎn),而且無損展示

以上就是“怎么用Python實(shí)現(xiàn)無損GIF動(dòng)圖的制作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI