Python代碼實現(xiàn)動圖倒放
開始分享今天的技術(shù)之前,先來看幾個動圖(gif)
(原圖1)
(倒放1)
(原圖2)
(倒放2)
上訴兩個動圖,可以通過幾行Python
代碼就可以實現(xiàn)倒放效果。
導(dǎo)入庫:
from PIL import Image, ImageSequence
Image
庫用于讀?。虞d)圖片
ImageSequence
用于將GIF拆解為圖片(一幀一圖)
# 加載本地動圖 image = Image.open("cg.gif") # GIF 動圖拆分器 list = ImageSequence.Iterator(image)
拆分動圖:
imgs = [] # 拆分后的圖片進行編號,從1開始 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
將拆解后的幀圖進行反轉(zhuǎn)(倒序排列),并保存成新的動圖reverse_cg.gif
# 拆分圖片流進行反序 imgs.reverse() # 將反序后所有幀圖保存下來,命名為reverse_cg.gif imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])
最后生成結(jié)果:
完整源碼:
from PIL import Image, ImageSequence # 加載本地動圖 image = Image.open("cg.gif") # GIF 動圖拆分器 list = ImageSequence.Iterator(image) ? imgs = [] # 拆分后的圖片進行編號,從1開始 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 ? # 拆分圖片流進行反序 imgs.reverse() # 將反序后所有幀圖保存下來,命名為reverse_cg.gif imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])
以上就是本文的動圖倒放技術(shù)過程
原理:讀取動圖,將動圖進行拆分(一幀一圖),將拆分后的動圖進行反轉(zhuǎn)(實現(xiàn)倒放的關(guān)鍵),然后反轉(zhuǎn)后的圖片保存新動圖(gif)。
到此這篇關(guān)于Python代碼實現(xiàn)動圖倒放的文章就介紹到這了,更多相關(guān)Python動圖倒放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行
這篇文章主要介紹了python3 使用goto跳轉(zhuǎn)執(zhí)行到指定代碼行的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05Python+selenium實現(xiàn)截圖圖片并保存截取的圖片
這篇文章介紹如何利用Selenium的方法進行截圖并保存截取的圖片,需要的朋友參考下本文2018-01-01Python實現(xiàn)對桌面進行實時捕捉畫面的方法詳解
最近在研究目標檢測方面的小東西,需要到對桌面進行實時捕捉畫面。所以本文來用Python實現(xiàn)簡單的對桌面進行實時捕捉畫面,感興趣的可以了解一下2023-01-01Python入門教程(二十)Python的Lambda表達式
這篇文章主要介紹了Python入門教程(二十)Python的Lambda表達式,lambda表達式是一行的函數(shù)。它們在其他語言中也被稱為匿名函數(shù),lambda表達式非常有用,可以讓代碼簡單,簡潔,需要的朋友可以參考下2023-04-04