首頁 > 軟體

十行Python程式碼製作一個視訊倒放神器

2022-02-15 13:01:13

導語

大家好,我是栗子同學!

今天給大家分享一個好玩的東西

讓時光倒流——噹噹噹,其實就是讓視訊倒放而已

正常的視訊如下

倒放視訊如下

效果很贊吧,等你學會了這個,你才會發現,抖音上那些杯子裡的水倒流,倒著跑步等看似很炫酷很神祕的視訊,其實就是一鍵倒放而已!

那麼,今天小編就來探索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視訊倒放內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com