Python代碼實(shí)現(xiàn)動(dòng)圖倒放
開(kāi)始分享今天的技術(shù)之前,先來(lái)看幾個(gè)動(dòng)圖(gif)
(原圖1)

(倒放1)

(原圖2)

(倒放2)

上訴兩個(gè)動(dòng)圖,可以通過(guò)幾行Python代碼就可以實(shí)現(xiàn)倒放效果。
導(dǎo)入庫(kù):
from PIL import Image, ImageSequence
Image庫(kù)用于讀?。虞d)圖片
ImageSequence 用于將GIF拆解為圖片(一幀一圖)
# 加載本地動(dòng)圖
image = Image.open("cg.gif")
# GIF 動(dòng)圖拆分器
list = ImageSequence.Iterator(image)拆分動(dòng)圖:
imgs = []
# 拆分后的圖片進(jìn)行編號(hào),從1開(kāi)始
k = 1
# 遍歷圖片流的每一幀
for frame in list:
? ? # 拆分后的圖片,保存到chenge文件夾下,圖片命名為img_1.png、img_2.png、...
? ? frame.save("./chenge/img_%d.png" % k)
? ? imgs.append(frame.copy())
? ? k += 1將拆解后的幀圖進(jìn)行反轉(zhuǎn)(倒序排列),并保存成新的動(dòng)圖reverse_cg.gif
# 拆分圖片流進(jìn)行反序
imgs.reverse()
# 將反序后所有幀圖保存下來(lái),命名為reverse_cg.gif
imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])最后生成結(jié)果:

完整源碼:
from PIL import Image, ImageSequence
# 加載本地動(dòng)圖
image = Image.open("cg.gif")
# GIF 動(dòng)圖拆分器
list = ImageSequence.Iterator(image)
?
imgs = []
# 拆分后的圖片進(jìn)行編號(hào),從1開(kāi)始
k = 1
# 遍歷圖片流的每一幀
for frame in list:
? ? # 拆分后的圖片,保存到chenge文件夾下,圖片命名為img_1.png、img_2.png、...
? ? frame.save("./chenge/img_%d.png" % k)
? ? imgs.append(frame.copy())
? ? k += 1
?
# 拆分圖片流進(jìn)行反序
imgs.reverse()
# 將反序后所有幀圖保存下來(lái),命名為reverse_cg.gif
imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])以上就是本文的動(dòng)圖倒放技術(shù)過(guò)程
原理:讀取動(dòng)圖,將動(dòng)圖進(jìn)行拆分(一幀一圖),將拆分后的動(dòng)圖進(jìn)行反轉(zhuǎn)(實(shí)現(xiàn)倒放的關(guān)鍵),然后反轉(zhuǎn)后的圖片保存新動(dòng)圖(gif)。
到此這篇關(guān)于Python代碼實(shí)現(xiàn)動(dòng)圖倒放的文章就介紹到這了,更多相關(guān)Python動(dòng)圖倒放內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行
這篇文章主要介紹了python3 使用goto跳轉(zhuǎn)執(zhí)行到指定代碼行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python+selenium實(shí)現(xiàn)截圖圖片并保存截取的圖片
這篇文章介紹如何利用Selenium的方法進(jìn)行截圖并保存截取的圖片,需要的朋友參考下本文2018-01-01
基于Python實(shí)現(xiàn)錄音功能的示例代碼
今天我們來(lái)介紹一個(gè)好玩且實(shí)用的東西,我們使用python來(lái)實(shí)現(xiàn)一個(gè)錄音的功能。文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-02-02
Python實(shí)現(xiàn)對(duì)桌面進(jìn)行實(shí)時(shí)捕捉畫(huà)面的方法詳解
最近在研究目標(biāo)檢測(cè)方面的小東西,需要到對(duì)桌面進(jìn)行實(shí)時(shí)捕捉畫(huà)面。所以本文來(lái)用Python實(shí)現(xiàn)簡(jiǎn)單的對(duì)桌面進(jìn)行實(shí)時(shí)捕捉畫(huà)面,感興趣的可以了解一下2023-01-01
python 文件下載之?dāng)帱c(diǎn)續(xù)傳的實(shí)現(xiàn)
用python進(jìn)行文件下載的時(shí)候,一旦出現(xiàn)網(wǎng)絡(luò)波動(dòng)問(wèn)題,導(dǎo)致文件下載到一半。如果將下載不完全的文件刪掉,那么又需要從頭開(kāi)始,如果連續(xù)網(wǎng)絡(luò)波動(dòng),是不是要頭禿了。本文提供斷點(diǎn)續(xù)傳下載工具方法,希望可以幫助到你2021-11-11
利用Python編寫(xiě)簡(jiǎn)易的錄制屏幕小工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言編寫(xiě)一個(gè)簡(jiǎn)易的錄制屏幕小工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-08-08
Python入門(mén)教程(二十)Python的Lambda表達(dá)式
這篇文章主要介紹了Python入門(mén)教程(二十)Python的Lambda表達(dá)式,lambda表達(dá)式是一行的函數(shù)。它們?cè)谄渌Z(yǔ)言中也被稱(chēng)為匿名函數(shù),lambda表達(dá)式非常有用,可以讓代碼簡(jiǎn)單,簡(jiǎn)潔,需要的朋友可以參考下2023-04-04

