python生成摸头GIF

本篇教程演示了如何使用python的PIL库生成GIF图片

源码已经贴在文中,自行取用

效果演示

运行代码,会让你选择要制作的图片

运行完成后,会在同路径下生成dem.gif

原理

  1. 本源码主要用到PIL库的Image模块
  2. 使用Image模块的相关方法处理每一帧的图片
  3. 存储到GIF列表并生成GIF
  4. 需要先调试好参数

源码

完整代码及素材打包在附件中了,文末下载

环境: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动态图的更多相关文章

  1. 如何录制视频生成GIF动态图?

    前言 在分享文章时有些知识不好讲清,就打算用gif图来展示,可是在网上找了几个录视频的工具都要会员才可以生成gif动态图,很是郁闷,不过苦苦寻找后,发现LICEcap很好用,可以很方便的生成gif动态 ...

  2. JS生成gif动态图下载

    需求:通过动态变化的图生成一个gif图提供下载. 实现方案:1.可通过服务端生成对应gif,然后前端请求下载2.前端自己实现生成gif图片,自行下载 采用方案:前端实现方式,于是在网上找各种相关的几款 ...

  3. 音视频入门-20-BMP、PNG、JPG、GIF静态图生成GIF动态图

    * 音视频入门文章目录 * 静态图 -> 动态图 前面 [18-手动生成一张GIF图片] 和 [19-使用giflib处理GIF图片] 生成的 GIF 每一帧都是一个颜色,平时用到的 GIF 每 ...

  4. python生成组织架构图(网络拓扑图、graph.editor拓扑图编辑器)

    Graph.Editor是一款基于HTML5技术的拓补图编辑器,采用jquery插件的形式,是Qunee图形组件的扩展项目,旨在提供可供扩展的拓扑图编辑工具, 拓扑图展示.编辑.导出.保存等功能,此外 ...

  5. 利用Python生成GIF动图

    一.PIL库 1.PIL库的概括: PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库 ...

  6. Python排序算法动态图形化演示(实现代码)

     1.冒泡排序 冒泡排序是最简单也是最容易理解的排序方法,其原理就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是 ...

  7. Latex中也能展示动态图?

    技术背景 在学术领域,很多文档是用Latex做的,甚至有很多人用Latex Beamer来做PPT演示文稿.虽然在易用性和美观等角度来说,Latex Beamer很大程度上不如PowerPoint,但 ...

  8. 【Python】模块学习之matplotlib柱状图、饼状图、动态图及解决中文显示问题

    前言 众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象.而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用 ...

  9. 你只要5行代码,拥有你的个性二维码,用Python生成动态二维码

    如果想了解更多关于python的应用,可以私信我,或者点击下方链接自行获取,里面到资料都是免费的(http://t.cn/A6Zvjdun) 二维码满天飞,但是有没有想过Python也能制作出专属于自 ...

随机推荐

  1. Java 中的编译期常量是什么?使用它又什么风险?

    公共静态不可变(public static final )变量也就是我们所说的编译期常量,这里 的 public 可选的.实际上这些变量在编译时会被替换掉,因为编译器知道这些 变量的值,并且知道这些变 ...

  2. synchronized使用及原理解析

    修饰静态方法.实例方法.代码块 Synchronized修饰静态方法,对类对象进行加锁,是类锁. Synchronized修饰实例方法,对方法所属对象进行加锁,是对象锁. Synchronized修饰 ...

  3. 学习heartbeat-05 实现web服务高可用

    一.环境介绍 说明:所有案例在虚拟机(VMware)上完成 操作系统:centos 6.5 64bit 高可用软件:heartbeat 3.0.4 Web应用服务器:apache httpd 2.2. ...

  4. 5. Git初始化及仓库创建和操作

    4. Git初始化及仓库创建和操作 基本信息设置 1. 设置用户名 git config --global user.name 'itcastphpgit1' 2. 设置用户名邮箱 git confi ...

  5. carsim的一些注意事项

    1.carsim导入simulink中运行的目录下最好有simfile.sim文件,可以再carsim_2016.1_date中找到(文件夹内最下端) 2.carsim导入simulink中如果显示下 ...

  6. EMC EMI EMS定义与区别

    一.EMC EMI EMS定义: EMC(ElectromagneticCompatibility) 电磁兼容,是指设备或系统在电磁环境中性能不降级的状态.电磁兼容,一方面要求系统内没有严重的干扰源, ...

  7. 分享一个react 图片上传组件 支持OSS 七牛云

    react-uplod-img 是一个基于 React antd组件的图片上传组件 支持oss qiniu等服务端自定义获取签名,批量上传, 预览, 删除, 排序等功能 需要 react 版本大于 v ...

  8. Citus 分布式 PostgreSQL 集群 - SQL Reference(SQL支持和变通方案)

    由于 Citus 通过扩展 PostgreSQL 提供分布式功能,因此它与 PostgreSQL 结构兼容.这意味着用户可以使用丰富且可扩展的 PostgreSQL 生态系统附带的工具和功能来处理使用 ...

  9. 基于 WPF和ASP.NET Core 在线音视频聊天项目

    Dimension 基于 .NET 6 的在线音视频聊天项目 WPF和ASP.NET API开发 使用第三方依赖介绍 公用依赖 log4net 日志记录. SignalR 用于服务器与客户端的通讯手段 ...

  10. 【uniapp 开发】文字缩略css

    文字超出两行后显示省略号 display: -webkit-box; overflow: hidden; text-overflow: ellipsis; word-wrap: break-word; ...