“Python3 截图”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
(建立内容为“<markdown> ``` pip install pywin32 ``` </markdown>或者<markdown> ``` pip install Pillow ``` </markdown><markdown> ``` pip install numpy ``` </markdown>”的新页面)
 
第2行: 第2行:
 
```
 
```
 
pip install pywin32
 
pip install pywin32
```
 
</markdown>或者<markdown>
 
```
 
pip install Pillow
 
 
```
 
```
 
</markdown><markdown>
 
</markdown><markdown>
```
+
```python
pip install numpy
+
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")