python 网页樱花动态图_如何用Python实现动态图?
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实现动态图?相关推荐
- python画画用哪个软件_如何用python画韦恩图? 使用python的tutul工具,画一朵雏菊花...
使用python的tutul工具,画一朵雏菊花 如何用python画韦恩图?不管什么时候,给心留一点空间.人生一世,不用什么都要去争,不是什么都要去抢,欲望少一点,满足多一点,这样才会活得潇洒一点,人 ...
- 怎么用python读取excel图_如何用Python读取Excel中图片?
公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...
- 用python做舆情分析系统_如何用Python做舆情时间序列可视化?
如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...
- python爬取微信好友_如何用 Python 爬取自己的微信朋友
原标题:如何用 Python 爬取自己的微信朋友 作者 Alfred 本文转载自网络,如涉及侵权请及时联系我们 微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天.分 ...
- python中文模糊关键词提取_如何用Python提取中文关键词?
本文一步步为你演示,如何用Python从中文文本中提取关键词.如果你需要对长文"观其大略",不妨尝试一下. 需求 好友最近对自然语言处理感兴趣,因为他打算利用自动化方法从长文本里提 ...
- 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?
推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...
- python删除excel第一行_如何用 Python 清洗数据?
林骥的第 38 篇文章 0. 序言在做数据分析之前,我们首先要明确数据分析的目标,然后应用数据分析的思维,对目标进行细分,再采取相应的行动.我们可以把数据分析细分为以下 8 个步骤:(1)读取(2)清 ...
- python调用有道翻译_如何用python“优雅的”调用有道翻译?
前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...
- python情绪分析的意义_如何用Python和R对故事情节做情绪分析?
想知道一部没看过的影视剧能否符合自己口味,却又怕被剧透?没关系,我们可以用情绪分析来了解故事情节是否足够跌宕起伏.本文一步步教你如何用Python和R轻松愉快完成文本情绪分析.一起来试试吧. 烦恼 追 ...
- 如何用python输出九九乘法表_如何用python输出九九乘法表?有哪些方法?
大家学了学习python这么久,大概都可以将python融汇贯通使用了吧,今天小编就教大家一个案例,融汇python主要的方法内容,一起来看下吧~ 概述 今天主要介绍如何用Python实现九九乘法表( ...
最新文章
- cadence原理图封装pin名称重复_硬件工程师必备技巧--如何快速制作PCB封装
- php获取总共内存_php获取页面运行使用内存的两个函数
- bootstrap精简教程
- 最详细的U-BOOT源码分析及移植
- c语言文件压缩与解压缩实验报告,哈弗曼树的文件压缩和解压实验报告(C语言).doc...
- 路痴福音!高德地图上线真AR步行导航,可实景指引
- 表单中enctype=multipart/form-data的意思
- 模型算法_生产建模型 算法控效率
- scipy.misc.imresize
- python绘制曲线y=2x+5_Python Matplotlib 简易教程
- 重点关注之自定义序列化方式(Protobuf和Msgpack)
- 计算机ers,读博、国企、互联网公司该如何选择?
- 【面经】深度学习算法岗(京东)
- mongodb之使用explain和hint性能分析和优化
- c++ vector,list,deque,map,set,hash_map 特点及区别
- 【数据结构】——逆波兰表达式
- 高数 | 【一元函数微分学】导数部分经典快速例题
- 计算机保研个人简介,保研个人简历模板
- 软件测试实习生 带人计划 Plan for Training Inten
- 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)
热门文章
- Navicat死活连不上MyCat咋整
- MySQL基础全套全网最详细讲解
- 关于MAC充不进电的解决办法
- Sentinel-2数据下载及预处理
- 9月编程排行榜新鲜出炉!霸榜还得是它!
- 计算机证书一般多久可以领取合格证书?计算机证书有哪些?
- Unity教程之-Unity光照贴图Lightmapping
- php整点抽奖活动,php,抽奖算法_PHP抽奖算法思路?,php,抽奖算法,算法 - phpStudy
- excel不能同时打开多个独立窗口的解决办法
- Win8Metro(C#)数字图像处理--2.32图像曝光算法