效果图

工具与技术

GUI图形技术: PySimpleGUI 

https://pysimplegui.readthedocs.io/en/latest/  官方网址

  • PySimpleGUI库是是2018年发布的个人开源维护项目,是基于Tkinter、Remi、wxpython、PyQt这些模块的,其中Remi模块是将应用程序的界面用HTML的形式来展现,所以这个包有个亮点就是你可以输入相应的代码将其转变网页形式展示,而其余包则都是用来做图形界面的

  • 优点

    • 代码量少,门槛低

    • 不需要使用类来创建用户界面

    • 极为适合初学者,它里面包含了绝大多数原本需要用户编写的代码

  • 安装

    • pip install PySimpleGUI

图片处理技术:PIL库的类Image

  • Python图像库PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.PIL历史悠久,原来是只支持python2.x的版本的,后来出现了移植到python3的库pillow,pillow号称是friendly fork for PIL,其功能和PIL差不多,但是支持python3

  • Image类是PIL中的核心类,你有很多种方式来对它进行初始化,比如从文件中加载一张图像,处理其他形式的图像,或者是从头创造一张图像等。Image模块操作的基本方法都包含于此模块内。如open、save、conver、show…等方法

  • 安装

    • pip install Pillow

程序代码

创建一个 gif_util.py 工具类,用来生成gif图片

import os
from PIL import Imagedef generate_gif(file_path, loop=0, duration=500):try:# 图片列表file_list = os.listdir(file_path)except Exception as e:print(e)return False# 打开一张图片im = Image.open(os.path.join(file_path, file_list[0]))""":type:Image"""img_list = []for img in file_list[1:]:# 判断图片后缀是 jpg、png、jfif 三种图片才做处理if img.endswith("jpg") or img.endswith("png") or img.endswith("jfif"):img_url = os.path.join(file_path, img)print(img_url)img_list.append(Image.open(img_url))result_img = os.path.join(file_path, "result.gif")# 保存为一张gif图片# save_all=True 设置此项,会保存所有图片对象,否则只保存一张# append_images=img_list       img_list为存放对象们的列表# duration                  GIF动图的间隔时间# loop   循环播放的次数im.save(os.path.join(file_path, "result.gif"), save_all=True, append_images=img_list, loop=loop, duration=duration)return result_img

创建一个 gui_util.py 工具类,用来生成gui图形化界面

import PySimpleGUI as sgdef create_layout():# 设置主题sg.change_look_and_feel("GreenMono")# 设置页面内容, 设置文本内容t1 = sg.Text("请输入图片文件夹地址:")# 输入框img_path = sg.InputText()file_browse = sg.FolderBrowse(button_color=sg.GREENS[0])remark = sg.Text("注:如:D:\\imgs,生成的git图片在传入的图片文件夹中,且名称为 result.gif", text_color="#FF0000")t2 = sg.Text("请输入图片循环播放次数:")loop_count = sg.InputText(size=10, default_text=0)t3 = sg.Text("(0 表示无限循环)", font="Any 8", text_color="#FF0000")t4 = sg.Text("请输入图片播放间隔时长:")duration = sg.InputText(size=10, default_text=100)t5 = sg.Text("(单位是毫秒)", font="Any 8", text_color="#FF0000")# 设置操作按钮btn1 = sg.Button("开始生成git图", button_color=(sg.YELLOWS[0], sg.BLUES[0]))btn2 = sg.Button("关闭", button_color=(sg.YELLOWS[0], sg.GREENS[1]))# 设置输出文本框show_result = sg.Output(size=(80, 20))# 界面布局layout = [[t1, img_path, file_browse], [remark], [t2, loop_count, t3], [t4, duration, t5], [btn1, btn2],[show_result]]return layout

程序入口主方法

import PySimpleGUI as sg
import gif_util
import gui_util# 校验参数
def check_code(dict_data):if not dict_data or len(dict_data) == 0:return Falsefile_path = dict_data[0]loop = dict_data[1]duration = dict_data[2]if not file_path:return Falseif loop and not str(loop).isdigit():print("您输入的的循环次数是:%s,不是数值,请重新输入正确的数值!!!" % loop)return Falseif duration and not str(duration).isdigit():print("您输入的播放间隔时长是:%s,不是数值,请重新输入正确的数值!!!" % duration)return Falsereturn Trueif __name__ == '__main__':layout = gui_util.create_layout()window = sg.Window("欢迎使用git图片生成器!!!", layout)while True:# 读取界面输入的 值与相应的控件event, value = window.read()if event in [None, "关闭", "exit"]:breakif event == "开始生成git图":is_success = check_code(value)if is_success:file_path = value[0]loop = value[1]duration = value[2]# 生成gifresult_img = gif_util.generate_gif(file_path, int(loop), int(duration))print("gif图片生成完成!!!!!!!,图片保存地址:", result_img)window.close()

程序代码可直接复制运行,运行后即可出现以上效果图 !!!

程序猿与投资生活实录已改名为  程序猿知秋,WX 公众号同款,欢迎关注!

Python-写个gif图片生成器(斗图小神器)相关推荐

  1. python多线程爬取多个网址_【Python爬虫】多线程爬取斗图网站(皮皮虾,我们上车)...

    原标题:[Python爬虫]多线程爬取斗图网站(皮皮虾,我们上车) 斗图我不怕 没有斗图库的程序猿是无助,每次在群里斗图都以惨败而告终,为了能让自己在斗图界立于不败之地,特意去网上爬取了斗图包.在这里 ...

  2. 小程序mpvue图片绘制水印_开发笔记:使用 mpvue 开发斗图小程序

    之前用过 wepy 框架写了个小程序 GitHub - yshkk/shanbay-mina: 基于 wepy 框架的 "扇贝阅读" 微信小程序 ,感觉写法上类似 vue,但不那么 ...

  3. 用Python写个空课表生成器-Excel文件操作实例

    用Python写个空课表生成器 开发背景 刚入大学的CYQ加入了我们学校的学生会,面对繁杂的工作,能"偷懒"就"偷懒".这不,最近要举办几场活动,部门要安排人员 ...

  4. pythonppt_用Python实现ppt转化图片(附带长图合并功能)

    用Python实现ppt转化图片(附带长图合并功能) 前言 笔者前一阵在学习数据相关的东西,从初学开始,一直在参加社区中的图表小挑战,此项活动是社区出题人给出一定官方数据,参加小挑战的人员可以对数据进 ...

  5. Python爬虫实战(5)斗图啦表情包下载(单线程)

    Python爬虫实战(5)斗图啦表情包下载(单线程) 网页分析 代码 注意事项 文件名的中文标点 文件后缀os.path.splitext 网页反爬虫 输出结果 总结 利用BeautifulSoup ...

  6. canvas导出图片python_用Python实现ppt转化图片(附带长图合并功能)

    用Python实现ppt转化图片(附带长图合并功能) 前言 笔者前一阵在学习数据相关的东西,从初学开始,一直在参加社区中的图表小挑战,此项活动是社区出题人给出一定官方数据,参加小挑战的人员可以对数据进 ...

  7. python写一个自动识别图片提取文字

    python写一个自动识别图片提取文字. ** 1.介绍 使用python写一个自动识别图片提取文字的exe. 进行图像的文字识别,将图像中的文字提取出来,可以帮助我们完成很多有趣的事情. 准备工作 ...

  8. 你专属的斗图聊天神器——aidou for mac

    你专属的斗图聊天神器--aidou for mac是小编为您推荐的一款可以搜索图片,复制图片,预览图片,粘贴图片为一体的斗图聊天工具,使用这款工具,你可以畅快聊天,恶搞他人,快乐装逼,感兴趣的朋友,不 ...

  9. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

最新文章

  1. MIT设计深度学习框架登Nature封面,预测非编码区DNA突变
  2. Spring Boot中使用自定义Annotation来实现接口自动幂等
  3. lua学习笔记之函数
  4. 【转】Tomcat7启动的总过程 (有时间自己写下tomcat8的)
  5. MyBatis配置项--properties
  6. 绝不是剧透!全角度解析EMC Unity绝妙重头戏
  7. 睡前必读 | 如何系统性地学习分布式系统?
  8. c 语言实例大全,c语言实例大全
  9. 我的助理辞职了!——给不听话的下属看看~
  10. asp.net mvc 路由检测工具
  11. Python发邮件的小脚本
  12. data layui table 排序_具有排序、筛选、分组、虚拟化、编辑功能的React表格组件...
  13. idea java常用手册
  14. 新浪微博批量删除微博的方法
  15. IMAP 协议/命令
  16. zabbix图形中文字显示方框或乱码问题
  17. 计算机与测控技术专业就业方向,测控技术与仪器专业就业前景与方向(五篇)
  18. 会员管理系统实战开发教程(三)-充值记录功能
  19. 微信客服消息跳转h5,回复关键字,跳转小程序方式全集
  20. kiss原则包括什么_kiss是什么意思(kiss原则包括什么)

热门文章

  1. 理解gluPerspective和gluLookAt的关系
  2. python — 项目命名规范
  3. 电子表格也能做购物车?简单三步就能实现
  4. java在面板中加入图片_我想在这面板上添加图片,可是图片显示不出来,求助~...
  5. shell 中 exit0 exit1 的区别
  6. 交互式推荐在美团的实现
  7. Jode-Time学习笔记
  8. Vue proxy代理
  9. 智能移动出行带来更美好的未来——美国智能交通协会交通政策(附下载)
  10. 数据提取-lxml模块系列二