怎么用python把多个图片变成gif 格式?

Python012

怎么用python把多个图片变成gif 格式?,第1张

解决这个问题需要用到PIL库

from PIL import Image

import os

第一步 获得所有图像文件列表,过滤不需要扩展名

filelist = []  

path = os.getcwd()

files = os.listdir(path)

for f in files:  

    if(os.path.isfile(path + '/' + f)):

        if (os.path.splitext(f)[1] == ".BMP"):

            filelist.append(f)

        if (os.path.splitext(f)[1] == ".JPG"):

            filelist.append(f)

        if (os.path.splitext(f)[1] == ".PNG"):

            filelist.append(f)

        if (os.path.splitext(f)[1] == ".TIF"):

            filelist.append(f)

第二步 当判断文件不是GIF格式的时候转换为GIF格式

for infile in filelist:

  outfile = os.path.splitext(infile)[0] + ".gif"

  if infile != outfile:

    try:

      Image.open(infile).save(outfile)

      print "Covert to GIF successfully!"

    except IOError:

      print "This format can not support!", infile

1

PIL(Python Image Library)——它是python的第三方图像处理库,功能非常的强大,几乎被认定为Python的官方图像处理库。

功能如下:

1、图像归档(Image Archives)。

PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。

2、图像展示(Image Display)。

PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。

3、图像处理(Image Processing)。

PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

操作步骤

2

Step1:导入PIL库的模块

Image是PIL库的基本核心类,用来实现导入GIF

from PIL import Image, ImageSequence #导入PIL库的Image和 ImageSequence 模块

im = Image.open('1.gif') #导入需要倒放的gif

Step2:GIF图片分解成帧

ImageSequence模块包括了一个wrapper类,它能够让用户迭代访问图形序列中每一帧图像。利用ImageSequence中的Iterator函数创建一个迭代器实例,让用户循环访问序列中的全部图像。

sequence = [] #用来存放GIF分解成帧的序列

i=0

for f in ImageSequence.Iterator(im): #循环访问GIF中的逐帧

sequence.append(f.copy())

i+=1

f.save('out_'+str(i)+'.png') #将每次分离出来的帧保存

可以看到文件夹中已经有分解的静态图片了,每张图都是gif动图的某一帧,把所有的静态图按倒序连起来就是倒放的gif动图。

Step3:将得到的序列通过reverse()函数倒序

sequence.reverse() #将帧序列倒叙

Step4:将得到的帧序列重新还原成GIF:

sequence[0].save('out1.gif',save_all=True,append_images=sequence[1:]) #生成新的GIF

Step5:得到倒放GiF图片