前两天看到一张很有意思的图片,想转发到wx,但是wx只支持1M内的gif图片,所以,想用代码把原图压缩一下。网上在线压缩效果并不理想(要花钱),所以还是自己手动来吧!
python3.6+
pip install PIL
import imageio
from PIL import Image, ImageSequence
# 自定义压缩尺寸 rp*rp
rp = 150
# 图片缓存空间
image_list = []
# 读取gif图片
im = Image.open("11.gif")
# 提取每一帧,并对其进行压缩,存入image_list
for frame in ImageSequence.Iterator(im):
frame = frame.convert('RGB')
if max(frame.size[0], frame.size[1]) > rp:
frame.thumbnail((rp, rp))
image_list.append(frame)
# 计算帧之间的频率,间隔毫秒
duration = (im.info)['duration'] / 1000
# 读取image_list合并成gif
imageio.mimsave('c001.gif', image_list, duration=duration)
先找到一张测试gif图片:11.gif (自己随便找一张吧,懒得贴了)
然后放在caogao.py脚本的同级目录
这时候得到压缩后的图片c001.gif :
对比两个文件的大小:
。
。
。
ok,效果很好,收工!