十行Python代碼制作一個視頻倒放神器
導語
大傢好,我是栗子同學!
今天給大傢分享一個好玩的東西
讓時光倒流——當當當,其實就是讓視頻倒放而已
正常的視頻如下
倒放視頻如下
效果很贊吧,等你學會瞭這個,你才會發現,抖音上那些杯子裡的水倒流,倒著跑步等看似很炫酷很神秘的視頻,其實就是一鍵倒放而已!
那麼,今天小編就來探索Python代碼如何實現這個倒放的功能叭~
正文
這些搞笑的gif跟小視頻都是將正常的流暢通過倒放產生的效果啦
其實制作起來卻非常簡單,原理就是將gif圖片拆分出來每一幀,再將拆分的每一幀圖片反向排序保存到gif裡即可,隻需要十行代碼
源碼如下
from PIL import Image, ImageSequence # 讀取 GIF im = Image.open("1.gif") # GIF 圖片流的迭代器 iter = ImageSequence.Iterator(im) index = 1 # 遍歷圖片流的每一幀 for frame in iter: print("image %d: mode %s, size %s" % (index, frame.mode, frame.size)) frame.save("./images/img%d.png" % index) index += 1 # 把 GIF 拆分為圖片流 imgs = [frame.copy() for frame in ImageSequence.Iterator(im)] # 圖片流反序 imgs.reverse() # 將反序後的所有幀圖像保存下來 imgs[0].save("reverse.gif", save_all=True, append_images=imgs[1:])
效果展示
哈哈哈,看懂這個視頻瞭嘛!!
當遇到老人的時候應該…….
完整的一組效果
少年觸電,勇士及時救援!
去吧!皮卡丘
總結
哈哈哈哈,這些動態的倒放效果真的還挺有意思的哈~趕緊自己動手試試嘛
補充
Python其實不僅能實現視頻的倒放,還有動圖的倒放
下面是實現動圖倒放的示例代碼
# python下的圖像處理庫 from PIL import Image, ImageSequence # 系統模塊 import os # 用於讀取gif動圖 im = Image.open("讀取圖片的名稱") # gif圖片流的迭代器 iter = ImageSequence.Iterator(im) index = 1 for frame in iter: # 每一幀圖片 print("image %d: mode %s, size %s" % (index, frame.mode, frame.size)) # 若保存的路徑不存在,則創建文件夾 path = "imgs" if path not in os.listdir(): os.makedirs(path) # 將每一幀圖片保存到imgs文件夾下 frame.save("./imgs/frame%d.png" % index) index += 1 # 將gif拆分成圖片流 imgs = [frame.copy() for frame in ImageSequence.Iterator(im)] # 輸出原圖 # imgs[0].save("./out.gif", save_all=True, append_images=imgs[1:]) # 將圖片流反序 imgs.reverse() # 將反序後的圖片流保存並輸出 imgs[0].save("./reverse_out.gif", save_all=True, append_images=imgs[1:])
到此這篇關於十行Python代碼制作一個視頻倒放神器的文章就介紹到這瞭,更多相關Python視頻倒放內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Python簡單實現gif動圖倒放示例
- 用Python將GIF動圖分解成多張靜態圖片
- Python 圖像處理 Pillow 庫詳情
- 基於python使用Pillow做動態圖在圖中生成二維碼以及圖像處理
- python對gif圖壓縮的完美解決方案