“Python3 截图”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) (建立内容为“<markdown> ``` pip install pywin32 ``` </markdown>或者<markdown> ``` pip install Pillow ``` </markdown><markdown> ``` pip install numpy ``` </markdown>”的新页面) |
Jihongchang(讨论 | 贡献) 小 |
||
第2行: | 第2行: | ||
``` | ``` | ||
pip install pywin32 | pip install pywin32 | ||
− | |||
− | |||
− | |||
− | |||
``` | ``` | ||
</markdown><markdown> | </markdown><markdown> | ||
− | ``` | + | ```python |
− | + | import time | |
+ | |||
+ | import win32api | ||
+ | import win32con | ||
+ | import win32gui | ||
+ | import win32ui | ||
+ | |||
+ | def window_capture(filename): | ||
+ | |||
+ | hwnd = 0 # 窗口的编号,0号表示当前活跃窗口 | ||
+ | |||
+ | # 根据窗口句柄获取窗口的设备上下文DC(Divice Context) | ||
+ | |||
+ | hwndDC = win32gui.GetWindowDC(hwnd) | ||
+ | |||
+ | # 根据窗口的DC获取mfcDC | ||
+ | |||
+ | mfcDC = win32ui.CreateDCFromHandle(hwndDC) | ||
+ | |||
+ | # mfcDC创建可兼容的DC | ||
+ | saveDC = mfcDC.CreateCompatibleDC() | ||
+ | |||
+ | # 创建bigmap准备保存图片 | ||
+ | saveBitMap = win32ui.CreateBitmap() | ||
+ | |||
+ | # 获取监控器信息 | ||
+ | MoniterDev = win32api.EnumDisplayMonitors(None, None) | ||
+ | |||
+ | w = MoniterDev[0][2][2] | ||
+ | |||
+ | h = MoniterDev[0][2][3] | ||
+ | |||
+ | # 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() | ||
+ | |||
+ | end = time.time() | ||
+ | |||
+ | print(end - beg) | ||
+ | |||
+ | |||
+ | # Press the green button in the gutter to run the script. | ||
+ | if __name__ == '__main__': | ||
+ | window_capture("E:\\record\\2022\\7\\31\\test.jpg") | ||
``` | ``` | ||
</markdown> | </markdown> |
2022年7月30日 (六) 20:56的版本
pip install pywin32
import time
import win32api
import win32con
import win32gui
import win32ui
def window_capture(filename):
hwnd = 0 # 窗口的编号,0号表示当前活跃窗口
# 根据窗口句柄获取窗口的设备上下文DC(Divice Context)
hwndDC = win32gui.GetWindowDC(hwnd)
# 根据窗口的DC获取mfcDC
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
# mfcDC创建可兼容的DC
saveDC = mfcDC.CreateCompatibleDC()
# 创建bigmap准备保存图片
saveBitMap = win32ui.CreateBitmap()
# 获取监控器信息
MoniterDev = win32api.EnumDisplayMonitors(None, None)
w = MoniterDev[0][2][2]
h = MoniterDev[0][2][3]
# 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()
end = time.time()
print(end - beg)
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
window_capture("E:\\record\\2022\\7\\31\\test.jpg")