Python生成GIF动态图
python生成摸头GIF
本篇教程演示了如何使用python的PIL库生成GIF图片
源码已经贴在文中,自行取用
效果演示
运行代码,会让你选择要制作的图片
运行完成后,会在同路径下生成dem.gif

原理
- 本源码主要用到PIL库的Image模块
- 使用Image模块的相关方法处理每一帧的图片
- 存储到GIF列表并生成GIF
- 需要先调试好参数
源码
完整代码及素材打包在附件中了,文末下载
环境:python3.7
'''
不需要图形界面的
记得自己删除tk模块相关
并添加图像接收入口
rua("图像路径").add_gif()
'''
from tkinter import filedialog
from PIL import Image,ImageDraw
import os,tkinter
class rua():
def __init__(self,img_file):
# 载入图片
self.author = Image.open(img_file)
def add_png(self,png_d):
# 根据参数重置图片大小
author = self.author.resize((png_d[0],png_d[1] - png_d[2]))
# 载入素材
rua_p1 = Image.open(png_d[3])
# 创建背景模板
rua_png1 = Image.new('RGBA',(110,110),(255,255,255,255))
# 使用预定义的参数:jd,合成一帧的样例
rua_png1.paste(author,(110 - png_d[0],110 - png_d[1] + png_d[2]),author)
rua_png1.paste(rua_p1,(0,110 - png_d[1] - png_d[2]),rua_p1)
return rua_png1
def add_gif(self):
# 获取绝对路径
png_dir = os.getcwd() + '\\data\\'
# 获取素材列表
pst = os.listdir(png_dir)
for i in range(len(pst)):
pst[i] = png_dir + pst[i]
# 预调试好的参数,传入素材列表
jd = [[90,90,5,pst[0]],
[90,87,5,pst[2]],
[90,84,10,pst[3]],
[90,81,8,pst[4]],
[90,78,5,pst[5]],
[90,75,5,pst[6]],
[90,72,8,pst[7]],
[90,74,8,pst[8]],
[90,77,9,pst[9]],
[90,80,8,pst[1]]]
# 重置要生成的图片大小
self.author = self.author.resize((90,90))
# 绘制模板
alpha_layer = Image.new('L', (90, 90), 0)
draw = ImageDraw.Draw(alpha_layer)
draw.ellipse((0,0,90,90), fill=255)
self.author.putalpha(alpha_layer)
# gif列表
gifs = []
for i in range(len(jd)):
# 将参数传递给生成方法
# 添加到gif列表
gifs.append(self.add_png(jd[i]))
# 文件名,是否保存所有,图片列表,fps/ms
gifs[0].save("dem.gif","GIF",save_all=True,append_images=gifs, duration=35,loop=0)
self.author.close()
# 写上这个方法,否则在选择文件时,会弹出一个tk的默认界面
# 可以将下面两行注释掉看看效果
root = tkinter.Tk()
root.withdraw()
# 选择要生成的文件
# 可以替换为指定路径
file_path = filedialog.askopenfilename()
au = rua(file_path).add_gif()
本功能已集成到<一铭API>中
源站地址:https://api.wer.plus
接口开发采用:Python + Flask
下载完整代码
Python生成GIF动态图的更多相关文章
- 如何录制视频生成GIF动态图?
前言 在分享文章时有些知识不好讲清,就打算用gif图来展示,可是在网上找了几个录视频的工具都要会员才可以生成gif动态图,很是郁闷,不过苦苦寻找后,发现LICEcap很好用,可以很方便的生成gif动态 ...
- JS生成gif动态图下载
需求:通过动态变化的图生成一个gif图提供下载. 实现方案:1.可通过服务端生成对应gif,然后前端请求下载2.前端自己实现生成gif图片,自行下载 采用方案:前端实现方式,于是在网上找各种相关的几款 ...
- 音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图
* 音视频入门文章目录 * 静态图 -> 动态图 前面 [18-手动生成一张GIF图片] 和 [19-使用giflib处理GIF图片] 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每 ...
- python生成组织架构图(网络拓扑图、graph.editor拓扑图编辑器)
Graph.Editor是一款基于HTML5技术的拓补图编辑器,采用jquery插件的形式,是Qunee图形组件的扩展项目,旨在提供可供扩展的拓扑图编辑工具, 拓扑图展示.编辑.导出.保存等功能,此外 ...
- 利用Python生成GIF动图
一.PIL库 1.PIL库的概括: PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库 ...
- Python排序算法动态图形化演示(实现代码)
1.冒泡排序 冒泡排序是最简单也是最容易理解的排序方法,其原理就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...
- Latex中也能展示动态图?
技术背景 在学术领域,很多文档是用Latex做的,甚至有很多人用Latex Beamer来做PPT演示文稿.虽然在易用性和美观等角度来说,Latex Beamer很大程度上不如PowerPoint,但 ...
- 【Python】模块学习之matplotlib柱状图、饼状图、动态图及解决中文显示问题
前言 众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象.而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用 ...
- 你只要5行代码,拥有你的个性二维码,用Python生成动态二维码
如果想了解更多关于python的应用,可以私信我,或者点击下方链接自行获取,里面到资料都是免费的(http://t.cn/A6Zvjdun) 二维码满天飞,但是有没有想过Python也能制作出专属于自 ...
随机推荐
- Java 中的编译期常量是什么?使用它又什么风险?
公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里 的 public 可选的.实际上这些变量在编译时会被替换掉,因为编译器知道这些 变量的值,并且知道这些变 ...
- synchronized使用及原理解析
修饰静态方法.实例方法.代码块 Synchronized修饰静态方法,对类对象进行加锁,是类锁. Synchronized修饰实例方法,对方法所属对象进行加锁,是对象锁. Synchronized修饰 ...
- 学习heartbeat-05 实现web服务高可用
一.环境介绍 说明:所有案例在虚拟机(VMware)上完成 操作系统:centos 6.5 64bit 高可用软件:heartbeat 3.0.4 Web应用服务器:apache httpd 2.2. ...
- 5. Git初始化及仓库创建和操作
4. Git初始化及仓库创建和操作 基本信息设置 1. 设置用户名 git config --global user.name 'itcastphpgit1' 2. 设置用户名邮箱 git confi ...
- carsim的一些注意事项
1.carsim导入simulink中运行的目录下最好有simfile.sim文件,可以再carsim_2016.1_date中找到(文件夹内最下端) 2.carsim导入simulink中如果显示下 ...
- EMC EMI EMS定义与区别
一.EMC EMI EMS定义: EMC(ElectromagneticCompatibility) 电磁兼容,是指设备或系统在电磁环境中性能不降级的状态.电磁兼容,一方面要求系统内没有严重的干扰源, ...
- 分享一个react 图片上传组件 支持OSS 七牛云
react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 排序等功能 需要 react 版本大于 v ...
- Citus 分布式 PostgreSQL 集群 - SQL Reference(SQL支持和变通方案)
由于 Citus 通过扩展 PostgreSQL 提供分布式功能,因此它与 PostgreSQL 结构兼容.这意味着用户可以使用丰富且可扩展的 PostgreSQL 生态系统附带的工具和功能来处理使用 ...
- 基于 WPF和ASP.NET Core 在线音视频聊天项目
Dimension 基于 .NET 6 的在线音视频聊天项目 WPF和ASP.NET API开发 使用第三方依赖介绍 公用依赖 log4net 日志记录. SignalR 用于服务器与客户端的通讯手段 ...
- 【uniapp 开发】文字缩略css
文字超出两行后显示省略号 display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; ...