python圖片生成gif方法彙總
阿新 • • 發佈:2018-11-12
一、使用 PIL 和 images2gif 庫
第一種方法主要是採用PIL和imagegif庫,由於版本的原因,可能有的imagegif對圖片進行處理的時候,以下語句會報錯writeGif(outfilename , frames , duration = 0.1 , subRectangles = False)
python 3.5環境錯誤為: TypeError: a bytes-like object is required, not 'str'
解決方法是去這個網站https://github.com/isaacgerg/images2gif下載相應的image2gif.py,然後替代原來包裡面對應的檔案
以下是實現的程式碼
這個方法可以將彩色圖也轉化成GIF圖片,不會像下面的方法一樣。from PIL import Image from images2gif import writeGif outfilename = "my.gif" # 轉化的GIF圖片名稱 filenames = [] # 儲存所需要讀取的圖片名稱 for i in range(100): # 讀取100張圖片 filename = path # path是圖片所在檔案,最後filename的名字必須是存在的圖片 filenames.append(filename) # 將使用的讀取圖片彙總 frames = [] for image_name in filenames: # 索引各自目錄 im = Image.open(image_name) # 將圖片開啟,本文圖片讀取的結果是RGBA格式,如果直接讀取的RGB則不需要下面那一步 im = im.convert("RGB") # 通過convert將RGBA格式轉化為RGB格式,以便後續處理 im = np.array(im) # im還不是陣列格式,通過此方法將im轉化為陣列 frames.append(im) # 批量化 writeGif(outfilename, frames, duration=0.1, subRectangles=False) # 生成GIF,其中durantion是延遲,這裡是1ms
二、使用 imageio 庫
使用imageio的方法我只在黑白影象上測試成功,在彩色圖片上就一張圖片來回閃爍,我還不知到是什麼原因,可能我的庫版本比較老舊。以下是黑白圖片生成gif程式碼
圖1 彩色GIFimport imageio outfilename = "my.gif" # 轉化的GIF圖片名稱 filenames = [] for i in range(100): filename = path filenames.append(filename) frames = [] for image_name in filenames: im = imageio.read(image_name) # 讀取方式上存在略微區別,由於是直接讀取資料,並不需要後續處理 frames.append(im) imageio.mimsave(outfilename, frames, 'GIF', duration=0.1) # 生成方式也差不多
圖2 黑白
參考:
https://blog.csdn.net/ginynu/article/details/54990249
https://www.cnblogs.com/dcb3688/p/4608048.html