#GIF合成
import PIL.Image as Image def get_gif(pics_dir,n,t=0.1): imgs = [] for i in range(1,n): pic_name = '{}.png'.format(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,____,____) #图片张数,切换秒数 print('制作完成。所属文件:{}'.format(save_name))
效果如下:
显然慢的那张是我做的。
为什么没有那种丝滑的感觉?
也许是因为我这0.1秒读图是不是过于慢了啊(自我拷问)
但即使我调到0.0001秒也是没有那种丝滑的感觉(求助)
这代码只需要改3个参数就可(大牛们的答案可太强了)
重要提醒:py文件最好是与小图片们放在同一个文件夹!!!
图片名称最好是以0开头 这样for in 循环就是从0开始
因为把gif分解后编号正常情况下是从0开始的
#GIF分离
from PIL import Image im = Image.open('X.gif') # 读入一个GIF文件 try: im.save('picframe{:02d}.png'.format(im.tell())) while True: im.seek(im.tell()+1) im.save('picframe{:02d}.png'.format(im.tell())) except: print("处理结束")
同理,gif图与py文件最好放在一个同一个文件夹,不能放在桌面
否则多出来的图片会塞满你的桌面会影响你的心情(前车之鉴)