python如何实现gif录屏功能
这篇“python如何实现gif录屏功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python如何实现gif录屏功能”文章吧。
一、主界面实现(一)实现最简单的窗体
fromtkinterimport*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函数
defon_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)二、GIF录屏功能实现
(一)按次保存成图片
def_GifScreen():globalii+=1HWND=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图片的截取
defGifScreen():thread_list=[]t1=threading.Thread(target=makegif)thread_list.append(t1)(三)实现具体的makegif函数
当生成的图片达到20张的时候,就开始调用create_gif函数打包成gif文件。
defmakegif():globali,image_listwhileTrue:_GifScreen()time.sleep(0.5)ifi>20:break;create_gif(image_list,'out.gif',0.5)(四)实现create_gif,将文件夹里面的图片打包成GIF文件
image_list=[]defcreate_gif(image_list,gif_name,duration=1.0):frames=[]forimage_nameinimage_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
defGifScreen():thread_list=[]t1=threading.Thread(target=makegif)thread_list.append(t1)#正式开启现线程fortinthread_list:t.setDaemon(True)t.start()
以上就是关于“python如何实现gif录屏功能”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。