python gif压缩_基于python压缩gif图片大小。

使用PIL、imageio,将gif拆帧、压缩、合成。博主使用的是PyCharm工具。

1、安装imageio。File-->Settings-->Project:pro-->Project Interpreter-->点击 右上角的“+”搜索“imageio”安装。

2、提取gif每一帧并保存jpg格式,这里使用.convert('RGB')是因为frame.save不能保存png格式的图片,下同。

def getFrames(im):

#非动画

if False == im.is_animated :

return;

index = 1

for frame in ImageSequence.Iterator(im):

frame = frame.convert('RGB')

frame.save("g%d.jpg" % index)

compressImg('g%d.jpg'% index)

index = index + 1

return index

3、压缩图片。

def compressImg(ImgName):

im = Image.open(ImgName)

im.convert('RGB')

if max(im.size[0], im.size[1]) > 128:

im.thumbnail((128, 128))

im.save('f-'+ImgName, quality=50)

return 'OK'

4、将之前拆开的jpg文件合成gif。

def compressGif(ind,dur):

images = []

for i in range(1, ind):

images.append(imageio.imread('f-g%d.jpg' % i))

imageio.mimsave('c001.gif', images, duration = dur)

5、计算帧之间的频率,获取到的是毫秒,duration是秒,所以除以1000。

def calDuration(im):

return (im.info)['duration']/1000

6、移除图片。

def removeImg(ind):

for i in range(1,ind):

af = 'f-g' + str(i) + '.jpg'

f = 'g' + str(i) + '.jpg'

if os.path.exists(af):

os.remove(af)

if os.path.exists(f):

os.remove(f)

7、压缩之前的图片。

8、压缩之后的图片