【问题标题】:grabscreen.py Python win32api抓屏.py Python win32api
【发布时间】:2021-02-02 23:09:05
【问题描述】:

任何与 Win32gui 或此代码等效的 Linux 或 Mac OS 库? 在一个外部项目上工作,这个 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)

【问题讨论】:

  • pip install Pillow,很明显!

标签: linux win32gui


【解决方案1】:

你可以用pyautogui抓取屏幕:

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

【讨论】:

    【解决方案2】:

    你可以这样做:) 我认为 Mac OS 不能使用那些 WiIn32gui 库。 相反,您可以使用枕头来抓取屏幕。 屏幕大小可以根据您想要的大小进行更改。

    import cv2
    import numpy as np
    import pyautogui
    from PIL import ImageGrab
    
    screen_w = 1920
    screen_h = 1080
    
    while True:
        rgb = ImageGrab.grab(bbox=(0, 0, screen_w, screen_h)) 
        rgb = np.array(rgb)
    
        cv2.imshow('window_frame', rgb)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    

    【讨论】:

    • 请不要在没有解释的情况下发布代码作为答案。试着解释你的代码做了什么以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
    • 我添加了 cmets!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 2014-07-29
    • 2010-10-23
    • 1970-01-01
    • 2017-07-11
    • 2013-09-15
    • 2011-02-10
    相关资源
    最近更新 更多