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实现九九乘法表( ...
最新文章
- NB-IOT: Anchor Carrier 锚点载波
- 基于Pytorch再次解析使用块的现代卷积神经网络(VGG)
- MSDE 1433端口
- 职业规划:少走弯路的十条忠告
- 用脚本判断用户传参的参数是否有对应的进程在运行并把结果显示给用户
- 阿里云服务器(windows2012)
- 微信小程序云开发用户身份登录_你必须要掌握的微信小程序云开发
- c语言输入一串字符辨别奇偶,c语言设计输入一个正整数判断其中各个数字是否奇数偶数交替出现是输出yes不是输出no...
- 修改Eclipse的WorkSpace保持数[转载]
- 使用文件流的方式将 DataTable 导入到 Excel 中
- 在emacs里用w3m浏览网页
- Electron介绍(一)
- PCI总线地址空间与PC地址空间的映射关系及数据传输原理
- MIPI扫盲——DSI介绍(一)
- Java实现判断是否参加上秒杀活动
- dedecms调用友情链接代码
- app端-留存分析-周留存率报表开发
- 头像 linux,头像制作大师下载-头像制作大师appv1.2.0-Linux公社
- XCode 报错Thread 2:signal SIGABRT
- Java线程池的四种创建方式
热门文章
- AI绘画指南 stable diffusion webui (SD webui)如何设置与使用
- 使用Python对图像进行不同级别量化QP,使用RLE计算压缩比,并计算对应的PSNR
- 鹏程万里------老化上云(1)
- opencv3.0中的无缝克隆图像——seamless_cloning(Poisson Image Editing)
- 超级详细的k8s入门教程
- 2023年6月18日DAMA-CDGA/CDGP数据治理认证报名指南
- 大学四年生活总结_从大一到就业——大学生活总结(上)
- 七年级上册英语书人教版单词表第三单元
- geoserver发布热力图服务
- 饮料换购 (C语言)