2016-12-11 55 views
1
  • 我有png格式我想串(PIL)圖片彙集成GIF動畫
  • 名單要做到這一點,我目前使用的imageio
  • 但是,我無法找到一個方法來做到這產生質量好的GIF

據我所知,有兩種類型的設置我可以改變。用於讀取.png的imageio.imread()設置以及用於寫入gif的imageio.mimwrite()設置。據imageio.help()imageio:如何提高輸出gif的質量?

  1. imageio.imread()具有一個讀放慢參數僅供PNG-PILignoregamma這需要一個布爾值。這不會改變我的輸出gif。
  2. imageio.mimwrite()可以指兩種格式。第一個是GIF-PIL。此格式的輸出僅顯示一幀,因此不合需要。 Output here
  3. imageio.mimwrite()具有第二種格式GIF-FI。這產生更有前途的輸出具有以下選項:
    • 'quantizer':'wu'生成完整的gif與指定的幀和幀速率,但產生一個「損壞」種類-的質量Output here
    • 'quantizer':'nq'生成一個完整的gif,其質量比'wu'好,但不能很好地處理色差。注意右下角的圖例傾向於改變它的顏色。 Output here

下面是最優質的相關代碼,我能得到這麼遠(GIF-FInq

def gen_gif(self, datetime_list): 
    kwargs_write = {'fps':5.0, 'quantizer':'nq'} 
    frames = [] 
    for datetime in datetime_list: 
     frames.append(imageio.imread(datetime+'.png')) 
    exportname = '{} to {}.gif'.format(datetime_list[0], datetime_list[-1]) 
    imageio.mimsave(exportname, frames, 'GIF-FI', **kwargs_write) 

的函數調用包含完整的一個字符串列表參數將.png圖像的路徑編譯爲gif。

回答

0

GIF格式每幀只能處理256種顏色。 quantizer參數確定將用於查找這些顏色的方法。

控制使用哪種顏色的最佳方法可能是自行減少顏色數量(至256)。