熱線電話:13121318867

登錄
首頁精彩閱讀Python實現動態圖解析、合成與倒放
Python實現動態圖解析、合成與倒放
2018-06-05
收藏

Python實現動態圖解析、合成與倒放

動態圖現在已經融入了我們的日常網絡生活,大大豐富了我們的表達方式和交流趣味性。常常是一言不合就扔動圖,我這里就不舉例子了,例子太多,平時大家也都接觸過。咱們直接開始本文的內容。

用到的庫和模塊

今天用看看如何用Python寫個程序,進行動態圖的解析、合成與倒放。這里我們用到的庫有且只有PIL。而且只用到了PIL的兩個模塊Image和ImageSequence。顧名思義,就是圖像模塊和圖像序列模塊。動態圖正好可以看作是圖像序列。

簡單的原理和代碼

所謂動態圖的解析,就是把GIF格式的圖片轉化為圖片流的過程,而動態圖的合成就是把圖片流重新合成GIF圖片的過程。而所謂動態圖倒放,就是把圖片流反序之后再合成GIF了。

原理上沒啥難以理解的,我們還是直接看代碼。

fromPILimportImage, ImageSequence
 
# 讀取GIF
im=Image.open("5.gif")
# GIF圖片流的迭代器
iter=ImageSequence.Iterator(im)
 
index=1
# 遍歷圖片流的每一幀
forframeiniter:
 print("image %d: mode %s, size %s"%(index, frame.mode, frame.size))
 frame.save("./imgs/frame%d.png"%index)
 index+=1
 
# frame0 = frames[0]
# frame0.show()
 
# 把GIF拆分為圖片流
imgs=[frame.copy()forframeinImageSequence.Iterator(im)]
# 把圖片流重新成成GIF動圖
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:])

效果

以下是動圖原圖、效果圖。

倒放的動態圖

動態圖解析得到的圖片流:

補充說明

加上注釋之后的代碼完全沒啥可說的有木有?

其實還還是有些地方可說的,比如圖片為啥保存為PNG格式的,JPG行不行?比如第六行與第19行末尾的代碼是否重復,第19行末尾能不能用iter代替?

這些問題知道的就算了,不知道的希望能夠自己跑一跑代碼,查一查資料,補充下這方面的小知識。

除此之外,還有哪些補充知識的方法呢?當然是看書啦~



數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢