极简化的图像数据读取库,官方文档

  • Imageio 是用纯 Python 编写的,所以安装很容易:pip install imageio

  • Imageio 依赖于 Numpy 和 Pillow

"""
将GIF图像保存为PNG图片
"""
import imageio
im = imageio.get_reader(r'C:\Users\admin\Pictures\Saved Pictures\GIF.gif')
num = 1
for frame in im:
    imageio.imsave('./image/%s.png'%num,frame,'PNG')
    num += 1
print("这张GIF图片总共由:%s张 PNG图片组成!!!"%num)

run代码之后,查看保存路径的文件夹:

"""
将多张图片按照需要进行gif动图制作

"""
image_list = []
# 存储图片的路径
file_name = r'D:\learn\project\new_image\image'
# 提取出该文件夹下所有文件名称,并将其存储为列表格式
for image_name in os.listdir(file_name):
    image_list.append(image_name)
"""
此时打印image_list:
['1.png', '10.png', '11.png', '12.png', '13.png', '14.png', '15.png', '16.png', '17.png', '18.png', '19.png', '2.png', '20.png', '21.png', '22.png', '23.png', '24.png', '25.png', '26.png', '27.png', '28.png', '29.png', '3.png', '30.png', '31.png', '32.png', '33.png', '34.png', '35.png', '36.png', '37.png', '38.png', '39.png', '4.png', '40.png', '41.png', '42.png', '43.png', '44.png', '45.png', '46.png', '47.png', '48.png', '49.png', '5.png', '50.png', '51.png', '52.png', '53.png', '54.png', '55.png', '56.png', '57.png', '58.png', '6.png', '7.png', '8.png', '9.png', 'image_gif.gif']

# 此时读取到的文件名顺序是完全混乱的,按照需求需要将文件进行排序,而 sort()采取了按字符键值排序的手段
# lambda x:int(x.split('.')[0]) 对每个文件名将句号前的字符串转化为数字,然后以数字为key来进行排序
"""
image_list.sort(key=lambda x: int(x.split('.')[0]))

# 设置生成GIF图片的文件名
gif_name = './image/image_gif.gif'

"""
读取 存储文件名的列表,并筛选出PNG格式的文件,拼接路径后再次存储在列表中
前面单独存储一个列表是为了排序的时候方便
# imageio.imread()  从指定的文件读取图像。返回一个NUMPY数组,该数组带有元数据的元属性。

"""
frames = []
for im in image_list:
    if im.endswith('.png'):
        im = os.path.join(file_name, im)
        frames.append(imageio.imread(im))
    else:
        print("该文件不是需要的PNG图片:"+ im)

# duration,设置切换间隔,单位:秒
imageio.mimsave(gif_name,frames,'GIF',duration = 0.2)
print(gif_name + '生成成功!!!')

 posted on 2021-06-17 18:40  叶叶酱  阅读(6853)  评论(0编辑  收藏  举报