1. 程式人生 > 其它 >輕鬆用幾行Python程式碼實現動圖倒放,學會了也玩廢了...

輕鬆用幾行Python程式碼實現動圖倒放,學會了也玩廢了...

前言

大家都喜歡搞笑視訊倒放吧,視訊倒放會給人不一樣的感覺,比起按照原本的劇本,倒放的效果給人的感覺更出乎意料。所以,

我就想可不可以用Python實現視訊或者圖片倒放呢?於是,我做到了,我想把它分享給大家,讓大家跟我一起玩。

開始分享今天的技術之前,先來看幾個動圖(gif)

(原圖1)

(倒放1)

(原圖2)

(倒放2)

上訴兩個動圖,可以通過幾行Python程式碼就可以實現倒放效果。

匯入庫

from PIL import Image, ImageSequence

 

Image庫用於讀取(載入)圖片

ImageSequence 用於將GIF拆解為圖片(一幀一圖)

Python學習交流Q群:903971231###906715085(已滿)
# 載入本地動圖
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

 

將拆解後的幀圖進行反轉(倒序排列),並儲存成新的動圖reverse_cg.gif

# 拆分圖片流進行反序
imgs.reverse()
# 將反序後所有幀圖儲存下來,命名為reverse_cg.gif
imgs[0].save("reverse_cg.gif", save_all=True, append_images=imgs[1:])

 

最後生成結果

完整原始碼

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:])

 

以上就是本文的動圖倒放技術過程

原理:讀取動圖,將動圖進行拆分(一幀一圖),將拆分後的動圖進行反轉(實現倒放的關鍵),然後反轉後的圖片儲存新動圖(gif)。

最後

今天的這篇文章到這裡就結束了,感興趣的要趁熱打鐵動手敲起來。喜歡的點贊收藏,有不懂的記得點贊評論,我看見就會回覆

的。