屏幕截图未显示python中的所有窗口截图imagegrab

2024-04-26 07:13:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Windows7下使用了Python2.7.11中的一个非常简单的代码。在

def takeScreenshot(filename,directories,allConfigs):
    im = pyautogui.screenshot()
    im.save(os.path.join(directories['picsdir'],filename))

当我使用这个函数时,它会截取整个屏幕的截图,除了我真正想要的应用程序是samsung sidesync。当使用这个代码时,它显示了整个屏幕,但它好像是三星sidesync窗口已经消失在屏幕截图中。在

但是如果我从键盘按钮打印屏幕并保存到一个文件,它就在那里,我可以看到它。在

我不明白为什么行为会有所不同。在


Tags: path代码屏幕ossavedeffilenamescreenshot
2条回答

接受的答案不起作用(或者可能不再有效)。使用Windows7和Python2.7 3.5和3.6,接受的答案不会在捕获的图像中显示sidesync GUI。因为GUI确实显示在普通屏幕截图中,所以您可以简单地触发一个屏幕截图,然后从剪贴板中读取图像数据。在

from ahk import AHK
from PIL import ImageGrab
ahk=AHK()
ahk.send('!{PrintScreen}')
img = ImageGrab.grabclipboard()

至于为什么会发生这种情况,最有可能的原因是三星sidesync使用DirectX/OpenGL/LayeredGraphics来渲染手机的屏幕图像。在

这就是为什么大多数用户的速度应用程序将无法获取显示在您的监视器上的内容,因为图形渲染实例超出了您的应用程序范围(请尝试渲染GL图形,并在您自己的代码更新sad GL实例中有一个线程,您将在这里了解我的观点)。在

现在,您的库只是以下代码的抽象:

from PIL import ImageGrab
screenshot = ImageGrab.grab()
screenshot.save('wham.png')

现在,following code钩住Windows系统库,这些库应该位于系统空间中,因此有更多的访问权限来获取分层窗口:

^{pr2}$

相关问题 更多 >