輕鬆用幾行Python程式碼實現動圖倒放,學會了也玩廢了...
阿新 • • 發佈:2022-05-05
前言
大家都喜歡搞笑視訊倒放吧,視訊倒放會給人不一樣的感覺,比起按照原本的劇本,倒放的效果給人的感覺更出乎意料。所以,
我就想可不可以用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)。
最後
今天的這篇文章到這裡就結束了,感興趣的要趁熱打鐵動手敲起來。喜歡的點贊收藏,有不懂的記得點贊評論,我看見就會回覆
的。