python基于tkinter实现gif录屏功能


Posted in Python onMay 19, 2021

一、主界面实现

(一)实现最简单的窗体

from tkinter import *

if __name__ == '__main__':

    tk = Tk()
    tk.geometry('500x400+500+150')
    tk.title('有趣的透明窗体-开篇了!!!')
    canvas = Canvas(tk)
    canvas.pack(fill=BOTH, expand=Y)
    tk.mainloop()

太简单了,不详细说了,相信大家都看得懂。

(二)把灰色设置成透明色

TRANSCOLOUR = 'gray'
tk.wm_attributes('-transparentcolor', TRANSCOLOUR)

(三)放置一个矩形框在canvas上

canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)

(四)让透明窗体不断重画的onsize函数

def on_resize(evt):
    tk.configure(width=evt.width,height=evt.height)
    canvas.create_rectangle(0, 0, canvas.winfo_width(), canvas.winfo_height(), fill=TRANSCOLOUR, outline=TRANSCOLOUR)
    print(canvas.winfo_width())

(五)绑定onsize函数

tk.bind('<Configure>', on_resize)

(六)透明窗体的效果

哈哈,透明主界面效果出来了。

python基于tkinter实现gif录屏功能

二、GIF录屏功能实现

(一)按次保存成图片

def _GifScreen():
    global i
    i += 1
    HWND = win32gui.FindWindow(None,'有趣的透明窗体-开篇了!!!')
    print(HWND)
    rect=win32gui.GetWindowRect(HWND) #获取当前窗口坐标
    rect = (rect[0]+10,rect[1]+32,rect[0]+10+ canvas.winfo_width(),rect[1]+10+canvas.winfo_height()+16)
    print(rect)
    im=ImageGrab.grab(rect) #截取目标图像
    im.save("./out/CaptureScreen_%s.jpeg" % i,'jpeg') #前面一个参数是保存路径,后面一个参数是保存格式

(二)启用一个线程

启用一个线程,调用makegif函数,实现gif图片的截取

def GifScreen():
    thread_list = []
    t1 = threading.Thread(target=makegif)
    thread_list.append(t1)

(三)实现具体的makegif函数

当生成的图片达到20张的时候,就开始调用create_gif函数打包成gif文件。

def makegif():
    global i,image_list
    while True:
        _GifScreen()
        time.sleep(0.5)
        if i > 20:
            break;
    create_gif(image_list,'out.gif',0.5)

(四)实现create_gif,将文件夹里面的图片打包成GIF文件

image_list = []
def create_gif(image_list, gif_name, duration = 1.0):
    frames = []
    for image_name in image_list:
        frames.append(imageio.imread(image_name))
    imageio.mimsave(gif_name, frames, 'GIF', duration=duration)

(五)增加录屏按钮,并绑定响应事件GifScreen

b = Button(tk, text='GIF截图', command=GifScreen)
b.pack()

(六)实现按钮的响应事件GifScreen

def GifScreen():
    thread_list = []
    t1 = threading.Thread(target=makegif)
    thread_list.append(t1)

    #正式开启现线程
    for t in thread_list:
        t.setDaemon(True)
        t.start()

三、整体实现效果

(一)界面效果

python基于tkinter实现gif录屏功能

(二)GIF录屏效果

python基于tkinter实现gif录屏功能

代码量不大,效果还行。
再深入研究可以有更多更有趣的应用。

以上就是python基于tkinter实现gif录屏功能的详细内容,更多关于python gif录屏的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用Python实现一个简单的项目监控
Mar 31 Python
python如何通过protobuf实现rpc
Mar 06 Python
Python中你应该知道的一些内置函数
Mar 31 Python
Python实现k-means算法
Feb 23 Python
Pycharm 实现下一个文件引用另外一个文件的方法
Jan 17 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
解决Django no such table: django_session的问题
Apr 07 Python
Python改变对象的字符串显示的方法
Aug 01 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python网络编程之ZeroMQ知识总结
Apr 25 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 #Python
python3 hdf5文件 遍历代码
May 19 #Python
Python基础之元组与文件知识总结
Python使用protobuf序列化和反序列化的实现
详解分布式系统中如何用python实现Paxos
May 18 #Python
如何在向量化NumPy数组上进行移动窗口
Python如何配置环境变量详解
You might like
PHP技术开发技巧分享
2010/03/23 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
jQuery的一些注意
2006/12/06 Javascript
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
Python isinstance判断对象类型
2008/09/06 Python
Python提取网页中超链接的方法
2016/09/18 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
selenium python浏览器多窗口处理代码示例
2018/01/15 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Flask配置Cors跨域的实现
2019/07/12 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
应届生求职自荐信范文
2014/04/07 职场文书
企业文化口号
2014/06/12 职场文书
归途列车观后感
2015/06/17 职场文书
机械生产实习心得体会
2016/01/22 职场文书
如何撰写创业策划书
2019/06/27 职场文书
SpringBoot快速入门详解
2021/07/21 Java/Android
MySQL常用慢查询分析工具详解
2022/08/14 MySQL