python实现gif动画(matplotlib、imageio、pillow)) -尊龙游戏旗舰厅官网
点击上方“ai搞事情”关注尊龙游戏旗舰厅官网
gif(graphics interchange format,图形交换格式)是一种位图图像格式。
gif格式的图像文件具有如下特点:
gif格式图像文件的扩展名是“.gif”。
对于灰度图像表现最佳。
具有gif87a和gif89a两个版本。
采用改进的lzw压缩算法处理图像数据。
调色板数据有通用调色板和局部调色板之分,有不同的颜色取值。
不支持24bit彩色模式,最多存储256色。
1. matplotlib
matplotlib 中的 animation 模块绘制动态图,绘制心形动态函数
安装matplotlib
动态图无法绘制透明背景。
2. imageio
pip install imageiohttps://blog.csdn.net/guduruyu/article/details/77540445
# -*- coding: utf-8 -*- import imageio def create_gif(image_list, gif_name):frames = []for image_name in image_list:frames.append(imageio.imread(image_name))# save them as frames into a gifimageio.mimsave(gif_name, frames, 'gif', duration=0.01) # duration:秒returndef main():png_path = 'images'png_files = os.listdir(png_path)image_list =[png_path "/d.png" % frame_id for frame_id in range(len(png_files))]gif_name = 'created_gif.gif'create_gif(image_list, gif_name)if __name__ == '__main__':main()imageio库有个弊端是好像不能将透明背景的png图像生成透明背景的gif图像
3. pillow
pip install pillowgithub:https://github.com/python-pillow/pillow
官方文档:
https://pillow.readthedocs.io/en/latest/handbook/image-file-formats.html#gif
参数说明pillow可以通过设置transparency参数,使gif背景为透明的。
import os import random from pil import image, imagedraw, imagesequence def gif2pngs(gif_path, png_path):"""gif图像拆成若干png帧图"""img = image.open(gif_path)for ind, frame in enumerate(imagesequence.all_frames(img)):# 保存每一帧图像frame.save(os.path.join(png_path, "d.png" % ind)) def pngs2gif(png_path, gif_name):"""png帧图生成gif图像"""frames = []png_files = os.listdir(png_path)for frame_id in range(len(png_files)):frame = image.open(os.path.join(png_path, "d.png" % frame_id))frames.append(frame)# frames.reverse() # 将图像序列逆转frames[0].save(gif_name, save_all=true, append_images=frames[1:], loop=0, disposal=2) def draw_gif(gif_name):"""通过pil绘制动态图"""size = 50i = 0colors = ['red', 'blue', 'green', 'gray']# 绘制随机闪现的球frames = []while i < 100:img = image.new("rgba", (800, 800), color=(0, 0, 0))draw = imagedraw.draw(img)x = random.randint(-800, 800)y = random.randint(-800, 800)if x-size < 0 or x-size > img.size[0]:continueif y-size < 0 or y-size > img.size[1]:continuedraw.ellipse((x, y, x size, y size), fill=colors[random.randint(0, 3)])frames.append(img)i = 1# transparency 透明背景设置,duration单位 毫秒, loop=0无限循环 loop=1循环一次,不设置,不循环frames[0].save(gif_name, save_all=true, append_images=frames[1:], transparency=0, duration=100, loop=0, disposal=2) if __name__ == '__main__':gif2pngs('下班了.gif', 'images')pngs2gif('images', 'tmp.gif')draw_gif('ball.gif') 图片gif2pngs('下班了.gif', 'images')函数执行后会在images保存帧图像
图片图片长按二维码关注尊龙游戏旗舰厅官网
有趣的灵魂在等你
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是尊龙游戏旗舰厅官网为你收集整理的python实现gif动画(matplotlib、imageio、pillow))的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: 【python自动化办公03】word操