小编典典

不带PIL的Python Windows 7屏幕截图

python

我想使用python截屏。

我尝试使用PIL,但是由于我使用的是64位Windows,而python PIL不起作用(我只能找到32位PIL版本)。我正在使用python 2.7.1。

我想截图,只要速度可以超过每秒1个,就没关系了。优选地,它也应该能够裁剪需要截屏的区域,但这并不是最重要的。

主要问题似乎是我在64位上运行,很多事情似乎与此不兼容。我真的不希望回到32位,尽管有可能。是否有任何程序或模块可以做到这一点?


阅读 217

收藏
2020-12-20

共1个答案

小编典典

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pil上获取win-
amd64-py2.7的PIL 。

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

更新:使用pywin32(http://sourceforge.net/projects/pywin32/)代替PIL来获取多个虚拟屏幕的屏幕截图:

import win32gui, win32ui, win32con, win32api
hwin = win32gui.GetDesktopWindow()
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)
bmp.SaveBitmapFile(memdc, 'screenshot.bmp')
2020-12-20