Pillow生成GIF動(dòng)態(tài)圖

2022-08-29 10:30 更新

GIF(Graphics Interchange Format,圖形交換格式)是一種“位圖”圖像格式,它以.gif作為圖像的擴(kuò)展名。GIF 圖片非常適合在互聯(lián)網(wǎng)中使用,這是因?yàn)樗捎昧藞D像預(yù)壓縮技術(shù),該技術(shù)的應(yīng)用,在一定程度上減少了圖像傳播、加載所消耗的時(shí)間。

與其他格式的圖片相比,GIF 還有一項(xiàng)非常重要的應(yīng)用,那就是生成動(dòng)態(tài)圖。我們知道,Pillow 能夠處理多種圖像格式,包括 GIF 格式,它可以將靜態(tài)格式圖片(png、jpg)合成為 GIF 動(dòng)態(tài)圖。 

注意:Pillow 總是以灰度模式(L)或調(diào)色板模式(P)來讀取 GIF 文件。


下面看一組示例:如何使用 Pillow 生成 GiF 動(dòng)態(tài)圖。(示例中所用圖片素材取自上一小節(jié)中分解出來的gif)

import os
import random
from PIL import Image

def png_to_gif(png_path,gif_name):
    """png合成gif圖像"""
    frames = []
    # 返回文件夾內(nèi)的所有靜態(tài)圖的列表
    png_files = os.listdir(png_path)
    # 打印返回的列表
    print(png_files)
    # 讀取文件內(nèi)的靜態(tài)圖
    for frame_id in range(0,len(png_files)):
        frame = Image.open(os.path.join(png_path,'%d.png'%frame_id))
        frames.append(frame)
    # 以第一張圖片作為開始,將后續(xù)5張圖片合并成 gif 動(dòng)態(tài)圖
    # 參數(shù)說明:
    # save_all 保存圖像;transparency 設(shè)置透明背景色;duration 單位毫秒,動(dòng)畫持續(xù)時(shí)間, 
    # loop=0 無限循環(huán);disposal=2 恢復(fù)原背景顏色。參數(shù)詳細(xì)說明,請(qǐng)參閱官方文檔,網(wǎng)址見文章末尾處。
    frames[0].save(gif_name,save_all=True,append_images=frames[1:],transparency=0,duration=2000,loop=0,disposal=2)
#調(diào)用函數(shù),傳入對(duì)應(yīng)的參數(shù)
png_to_gif("./image",'合成.gif')

動(dòng)態(tài)效果圖,如下所示:


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)