GIF(Graphics Interchange Format,图形交换格式)是一种位图图像格式,

GIF格式的图像文件具有如下特点:

(1)GIF格式图像文件的扩展名是“.gif”。

(2)对于灰度图像表现最佳。

(3)具有GIF87a和GIF89a两个版本。

(4)采用改进的LZW压缩算法处理图像数据。

(5)调色板数据有通用调色板和局部调色板之分,有不同的颜色取值。

(6)不支持24bit彩色模式,最多存储256色。matplotlib

matplotlib中的animation模块绘制动态图,绘制心形动态函数

安装matplotlib

pip install matplotlib

代码实现:

import numpy as np

import matplotlib.pyplot as plt

import matplotlib.animation as animation

fig, ax = plt.subplots()

# fig.patch.set_alpha(0.) # 设置透明背景,但animation不起作用

plt.axis('off') # 关闭坐标轴

#初始化窗口和坐标轴

xdata, ydata = [], []

#初始化x,y列表

ln, = ax.plot([], [], 'r-', animated=False)

#初始化绘制曲线的参数。

#init()函数初始化x,y轴范围

def init():

ax.set_xlim(-20,20)

ax.set_ylim(-20,15)

return ln,

#迭代器,根据传入的frame更新x,y值

def update(frame):

# 心形函数

x = 16 * np.sin(frame) ** 3

y = 13 * np.cos(frame) - 5 * np.cos(2 * frame) - 2 * np.cos(3 * frame) - np.cos(4 * frame)

xdata.append(x)

ydata.append(y)

ln.set_data(xdata, ydata)

return ln,

# interval:帧持续时间(milliseconds)

anim = animation.FuncAnimation(fig, update, frames=np.linspace(0, 10, 100), init_func=init, interval=1, repeat=False, blit=True)

anim.save('tmp.gif', writer='pillow')

plt.show()

matplotlib动态图无法绘制透明背景。

2. imageio

pip install imageio

# -*- 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 gif

imageio.mimsave(gif_name, frames, 'GIF', duration=0.01) # duration:秒

return

def main():

png_path = 'images'

png_files = os.listdir(png_path)

image_list =[png_path + "/%03d.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 pillow

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, "%03d.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, "%03d.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 = 50

i = 0

colors = ['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]:

continue

if y-size < 0 or y-size > img.size[1]:

continue

draw.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保存帧图像

python 网页樱花动态图_如何用Python实现动态图?相关推荐

  1. python画画用哪个软件_如何用python画韦恩图? 使用python的tutul工具,画一朵雏菊花...

    使用python的tutul工具,画一朵雏菊花 如何用python画韦恩图?不管什么时候,给心留一点空间.人生一世,不用什么都要去争,不是什么都要去抢,欲望少一点,满足多一点,这样才会活得潇洒一点,人 ...

  2. 怎么用python读取excel图_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  3. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  4. python爬取微信好友_如何用 Python 爬取自己的微信朋友

    原标题:如何用 Python 爬取自己的微信朋友 作者 Alfred 本文转载自网络,如涉及侵权请及时联系我们 微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天.分 ...

  5. python中文模糊关键词提取_如何用Python提取中文关键词?

    本文一步步为你演示,如何用Python从中文文本中提取关键词.如果你需要对长文"观其大略",不妨尝试一下. 需求 好友最近对自然语言处理感兴趣,因为他打算利用自动化方法从长文本里提 ...

  6. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  7. python删除excel第一行_如何用 Python 清洗数据?

    林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...

  8. python调用有道翻译_如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

  9. python情绪分析的意义_如何用Python和R对故事情节做情绪分析?

    想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...

  10. 如何用python输出九九乘法表_如何用python输出九九乘法表?有哪些方法?

    大家学了学习python这么久,大概都可以将python融汇贯通使用了吧,今天小编就教大家一个案例,融汇python主要的方法内容,一起来看下吧~ 概述 今天主要介绍如何用Python实现九九乘法表( ...

最新文章

  1. cadence原理图封装pin名称重复_硬件工程师必备技巧--如何快速制作PCB封装
  2. php获取总共内存_php获取页面运行使用内存的两个函数
  3. bootstrap精简教程
  4. 最详细的U-BOOT源码分析及移植
  5. c语言文件压缩与解压缩实验报告,哈弗曼树的文件压缩和解压实验报告(C语言).doc...
  6. 路痴福音!高德地图上线真AR步行导航,可实景指引
  7. 表单中enctype=multipart/form-data的意思
  8. 模型算法_生产建模型 算法控效率
  9. scipy.misc.imresize
  10. python绘制曲线y=2x+5_Python Matplotlib 简易教程
  11. 重点关注之自定义序列化方式(Protobuf和Msgpack)
  12. 计算机ers,读博、国企、互联网公司该如何选择?
  13. 【面经】深度学习算法岗(京东)
  14. mongodb之使用explain和hint性能分析和优化
  15. c++ vector,list,deque,map,set,hash_map 特点及区别
  16. 【数据结构】——逆波兰表达式
  17. 高数 | 【一元函数微分学】导数部分经典快速例题
  18. 计算机保研个人简介,保研个人简历模板
  19. 软件测试实习生 带人计划 Plan for Training Inten
  20. 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)

热门文章

  1. Navicat死活连不上MyCat咋整
  2. MySQL基础全套全网最详细讲解
  3. 关于MAC充不进电的解决办法
  4. Sentinel-2数据下载及预处理
  5. 9月编程排行榜新鲜出炉!霸榜还得是它!
  6. 计算机证书一般多久可以领取合格证书?计算机证书有哪些?
  7. Unity教程之-Unity光照贴图Lightmapping
  8. php整点抽奖活动,php,抽奖算法_PHP抽奖算法思路?,php,抽奖算法,算法 - phpStudy
  9. excel不能同时打开多个独立窗口的解决办法
  10. Win8Metro(C#)数字图像处理--2.32图像曝光算法