1. 程式人生 > >Python PIL.Image之製作GIF圖片

Python PIL.Image之製作GIF圖片

------------------------------------------------語法基礎------------------------------------------------

import PIL.Image                                          相關模組     

img=Image.open(img_name)                       開啟圖片

img.save(save_name, save_all=True, \       

append_images=imgs, duration=t)               儲存圖片

------------------------------------------------操作方法------------------------------------------------

1.開啟圖片後會得到一個物件,我們把這個物件放進列表。列表裡的所有物件將被合成GIF圖片

2.用這個列表作為引數之一,使用第0個物件呼叫save方法即可。

3.引數解釋save_all=True       設定此項,會儲存所有圖片物件,否則只儲存一張

    append_images=imgs        imgs為存放物件們的列表

    duration=t                            GIF動圖的間隔時間

------------------------------------------------程式碼實現------------------------------------------------

import PIL.Image as Image


def get_gif(pics_dir,n,t=0.1):
    imgs = []
    for i in range(n):
        pic_name = '{}/{}.png'.format(pics_dir,i)
        temp = Image.open(pic_name)
        imgs.append(temp)
    save_name = '{}.gif'.format(pics_dir)
    imgs[0].save(save_name, save_all=True, append_images=imgs, duration=t)
    return save_name


if __name__ == '__main__':
    pics_dir = '路人甲'
    save_name = get_gif(pics_dir,40,0.2)
    print('製作完成。所屬檔案:{}'.format(save_name))
------------------------------------------------效果展示------------------------------------------------

------------------------------------------------結語------------------------------------------------

如果希望製作透明背景的GIF,請為save方法新增transparency引數。其值是一個0~255的整形。

不過,有一個很大的問題,成品會出現重影。我翻遍五湖四海也沒有找到解決方法。

如果哪位兄弟找到了製作透明背景圖片的方法,請務必告訴我,謝謝!