十行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!

推薦閱讀: