Python3 實現 gif 倒放,多張圖片生成 gif

原文連接 何曉東 博客html

一個娛樂代碼,將表情包 gif 倒放很搞笑,當成本身的一個小玩具,操做就是將圖片讀取成幀,倒排合併一下,成爲新的圖片,完成。

效果:翻轉前 nba.gif 翻轉後 r-nba.gifpython

代碼以下:segmentfault

# encoding: utf-8

from PIL import Image, ImageSequence 

# 讀取GIF

im = Image.open("nba.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/frame%d.png" % index)
    index += 1

# frame0 = frames[0]

# frame0.show()

# 把GIF拆分爲圖片流

imgs = [frame.copy() for frame in ImageSequence.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:])

另外極簡版更簡單app

# encoding: utf-8

from PIL import Image, ImageSequence 

im = Image.open(r'./nba.gif')
sequence = []

for f in ImageSequence.Iterator(im):
    sequence.append(f.copy())    

sequence.reverse()
sequence[0].save(r'./r-nba.gif',save_all = True, append_images=sequence[1:])

將多張靜態圖片生成 gif 的代碼,這個年末能夠將每一年的圖片合併成一個大的 gif 以留做回憶,卻是頗有用的ide

# coding=utf8

import imageio
import os 

path = '../images'
filenames = []
for files in os.listdir(path):
    if files.endswith('jpg') or files.endswith('jpeg') or files.endswith('png'):
        file = os.path.join(path,files)
        filenames.append(file)

images = []
for filename in filenames:
    images.append(imageio.imread(filename))
    
imageio.mimsave('movie.gif', images, duration = 0.3)

原做者不建議使用 image2gif 包,詳見一樓回答spa

固然若是你有需求將一組尺寸同樣的照片生成 gif,能夠郵箱 hexiaodong1992@outlook.comcode

參考連接:htm

  1. 知乎 CVPy 專欄
  2. imageio 官方文檔

少年,你必定渴望--> 知識的源泉圖片

相關文章
相關標籤/搜索