200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > python工具-截图自动保存

python工具-截图自动保存

时间:2023-09-06 00:29:25

相关推荐

python工具-截图自动保存

截图

截图自动保存定时截图保存

截图自动保存

双击快速截图并自动保存。

时间戳相关

截图方法比较

截图的代码如下,grab_picture.py

import timeimport datetimeimport win32gui, win32ui, win32con, win32apidef window_capture(filename):hwnd = 0 # 窗口的编号,0号表示当前活跃窗口# 根据窗口句柄获取窗口的设备上下文DC(Divice Context)hwndDC = win32gui.GetWindowDC(hwnd)# 根据窗口的DC获取mfcDCmfcDC = win32ui.CreateDCFromHandle(hwndDC)# mfcDC创建可兼容的DCsaveDC = mfcDC.CreateCompatibleDC()# 创建bigmap准备保存图片saveBitMap = win32ui.CreateBitmap()# 获取监控器信息MoniterDev = win32api.EnumDisplayMonitors(None, None)w = int(MoniterDev[0][2][2]*1.25)h = int(MoniterDev[0][2][3]*1.25)# print w,h#图片大小# 为bitmap开辟空间saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)# 高度saveDC,将截图保存到saveBitmap中saveDC.SelectObject(saveBitMap)# 截取从左上角(0,0)长宽为(w,h)的图片saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)saveBitMap.SaveBitmapFile(saveDC, filename)beg = time.time()'''for i in range(10):file_date = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())file_date = file_date+".jpg"print(file_date)window_capture(file_date )'''file_date = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())+".jpg"window_capture(file_date )#end = time.time()

上述源码中,由于本机是将文字显示比例放大为125%,故这里需乘上1.25,未放大,取消倍率设置。

源码中注释部分为:连续打印10张图(实际上太快,只有1~2张)的

打包前的权限设置:

Win + R : regedit

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System

修改这个路径下的键值:EnableLUA 从1 设置为0

pyinstaller打包相关

打包的命令:

pyinstaller -F -w .\grab_picture.py

参数解释:

-F:打包后只生成单个exe格式文件;-D:默认选项,创建一个目录,包含exe文件以及大量依赖文件;-c:默认选项,使用控制台(就是类似cmd的黑框);-w:不使用控制台;-p:添加搜索路径,让其找到对应的库;-i:改变生成程序的icon图标。

打包后,在dist目录下有可执行文件,发送快捷图标至桌面,属性中设置快捷键为Ctrl+Alt+J。即可自动截图并保存,文件名为时间戳。

定时截图保存

记录时间:1000张图片×0.5s=500s

也可以自己改,不同设备上注意修改分辨率设置,,

代码:

import timeimport datetimeimport win32gui, win32ui, win32con, win32apidef window_capture(filename):hwnd = 0 # 窗口的编号,0号表示当前活跃窗口# 根据窗口句柄获取窗口的设备上下文DC(Divice Context)hwndDC = win32gui.GetWindowDC(hwnd)# 根据窗口的DC获取mfcDCmfcDC = win32ui.CreateDCFromHandle(hwndDC)# mfcDC创建可兼容的DCsaveDC = mfcDC.CreateCompatibleDC()# 创建bigmap准备保存图片saveBitMap = win32ui.CreateBitmap()# 获取监控器信息MoniterDev = win32api.EnumDisplayMonitors(None, None)w = int(MoniterDev[0][2][2]*1.25)h = int(MoniterDev[0][2][3]*1.25)# print w,h#图片大小# 为bitmap开辟空间saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)# 高度saveDC,将截图保存到saveBitmap中saveDC.SelectObject(saveBitMap)# 截取从左上角(0,0)长宽为(w,h)的图片saveDC.BitBlt((0, 0), (w, h), mfcDC, (0, 0), win32con.SRCCOPY)saveBitMap.SaveBitmapFile(saveDC, filename)beg = time.time()for i in range(1000):time.sleep(0.5)file_date = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())file_date = file_date+ str(i) +".jpg"print(file_date)window_capture(file_date)'''file_date = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())+".jpg"window_capture(file_date )'''print('done!')#end = time.time()

使用无命令窗口提示参数编译后,想要在截图完毕之前结束,可在任务管理器中结束 grab_picture.exe

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。