Python使用imageio合成20张PNG后的GIF后图片大小为10M,请问怎么减小图片体积?
问题描述:
img_paths = picurl_list
gif_images = []
for path in img_paths:
gif_images.append(imageio.imread(path))
imageio.mimsave("test.gif", gif_images, fps=2.5)
通过网页链接获取10-20张图片,然后合成GIF,但是图片太大了,有10M(大概20张png合成的),该怎么处理以减小图片大小呢?感觉1-3M合适
答
通过折帧,改变fps
import imageio
import numpy as np
img_paths = picurl_list
gif_images = []
c=0
for path in img_paths:
c+=1
if c%2:
bb=[]
aa=imageio.imread(path)
cc=0
for i in range(len(aa)):
cc+=1
if cc%3:
t=[]
ccc=0
for j in range(len(aa[0])):
ccc+=1
if ccc%3:
t.append(aa[i][j])
bb.append(t)
gif_images.append(bb.copy())
imageio.mimsave("test.gif", gif_images, fps=5)
答
from PIL import Image
# 只可接收 jpg 和 png 的图片
# 图片不加绝对路径会在当前文件下的目录下找图片
def zip_img_size(img_path, img_quality):
img = Image.open(img_path)
img_suffix = img_path[-3:]
changed_img_name = img_path[:-4] + '_q.' + img_suffix
if img_suffix == 'jpg':
img_suffix = "JPEG"
else:
img_suffix = 'PNG'
# quality 范围在 0-100, 0为最差的
img.save(changed_img_name, img_suffix, quality=img_quality)
print("Image saved in " + changed_img_name)
# 例:当前目录下有这张图片,大小为 80.6 KB
# 压缩后大小变为 12.8 KB
zip_img_size('testimg.jpg', 50)