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的整形。

不过,有一个很大的问题,成品会出现重影。我翻遍五湖四海也没有找到解决方法。

如果哪位兄弟找到了制作透明背景图片的方法,请务必告诉我,谢谢!

------------------------------------------------补充------------------------------------------------

gif透明的方法:

感谢评论区covsno提供的Chen Jiehua大佬通过研究源码发现的方法,把以上代码save行改为

imgs[0].save(save_name, save_all=True, append_images=imgs, duration=t, transparency=0, disposal=2)

即可实现gif的完全透明

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值