天天看點

你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:

前言

GIF的全稱是Graphics Interchange Format,可譯為圖形交換格式,用于以超文本标志語言(Hypertext Markup Language)方式顯示索引彩色圖像,在網際網路和其他線上服務系統上得到廣泛應用。

GIF圖現在已經融入了我們的日常網絡生活,微信群、QQ群、朋友圈......一言不合就鬥圖,你怕了嗎?不用擔心,隻要學會了Python之GIF倒放技能,你就是“鬥圖王”。

咱們直接開始本文的内容!

你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:
你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:

PIL(Python Image Library)

它是python的第三方圖像處理庫,功能非常的強大,幾乎被認定為Python的官方圖像處理庫。

1:導入PIL庫的子產品

from PIL import Image, ImageSequence  #導入PIL庫的Image和 ImageSequence 子產品
im = Image.open(r'./1.gif')   #注意把gif動圖放在該程式的相同目錄下           

複制

2:将GIF圖分解

為了能更直覺的了解這個程式的原理,我們可以将程式分解gif動圖的圖檔都儲存下來看看

sequence = []  #用來存放GIF分解成幀的序列
i=0
for f in ImageSequence.Iterator(im):  #循環通路GIF中的逐幀
    sequence.append(f.copy())
    i+=1     
    f.save('out_'+str(i)+'.png')     #将每次分離出來的幀儲存           

複制

你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:

3:将得到的序列通過reverse()函數倒序

sequence.reverse()           

複制

4:将得到的幀序列重新還原成GIF:

sequence[0].save(r'./out_zr640.gif',save_all = True, append_images=sequence[1:]) #倒放的gif圖儲存在目前目錄下           

複制

效果展示:

你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:
你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:
你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF:
你想不到的沙雕,8行代碼Python實作GIF圖倒放,每天的快樂源泉1:導入PIL庫的子產品2:将GIF圖分解3:将得到的序列通過reverse()函數倒序4:将得到的幀序列重新還原成GIF: