grabscreen.py Python win32api - PullRequest
       10

grabscreen.py Python win32api

0 голосов
/ 10 мая 2018

Какие-нибудь библиотеки Linux или Mac OS эквивалентны библиотекам Win32gui или этому коду? работая над внешним проектом, и этот код Windows поможет мне захватить экран. Не удалось найти какие-либо библиотеки, которые похожи. Спасибо

def grab_screen(region=None):

hwin = win32gui.GetDesktopWindow()

if region:
        left,top,x2,y2 = region
        width = x2 - left + 1
        height = y2 - top + 1
else:
    width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)
    height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)
    left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)
    top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN)

hwindc = win32gui.GetWindowDC(hwin)
srcdc = win32ui.CreateDCFromHandle(hwindc)
memdc = srcdc.CreateCompatibleDC()
bmp = win32ui.CreateBitmap()
bmp.CreateCompatibleBitmap(srcdc, width, height)
memdc.SelectObject(bmp)
memdc.BitBlt((0, 0), (width, height), srcdc, (left, top), win32con.SRCCOPY)

signedIntsArray = bmp.GetBitmapBits(True)
img = np.fromstring(signedIntsArray, dtype='uint8')
img.shape = (height,width,4)

srcdc.DeleteDC()
memdc.DeleteDC()
win32gui.ReleaseDC(hwin, hwindc)
win32gui.DeleteObject(bmp.GetHandle())

return cv2.cvtColor(img, cv2.COLOR_BGRA2RGB)

1 Ответ

0 голосов
/ 21 июня 2018

Вы можете захватить экран с помощью pyautogui:

import pyautogui
image = pyautogui.screenshot('filename.png')
...