没有 PIL 的 Python windows 7 屏幕截图

标签 python image windows-7 screenshot

我想用python截图。

我曾尝试使用 PIL,但由于我使用的是 64 位 Windows 并且 python PIL 不起作用(我只能找到 32 位 PIL 版本)。顺便说一句,我使用的是 python 2.7.1。

我要截个图,怎么做都无所谓,只要能达到每秒1个以上的速度即可。最好它还应该能够裁剪截取屏幕截图的区域,但这并不是最重要的。

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

最佳答案

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')

关于没有 PIL 的 Python windows 7 屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589206/

相关文章:

python - 在 React 组件中使用 Django 静态文件

arrays - 我想要将一组色 block 叠加到图像上并想要控制它们的颜色范围?

python - 对正则化数据使用 SciPy fmin_bfgs() 发出警告

具有多个误差条的 Python 线性拟合

c++ - 关于 QGraphicsView 中图像平铺的问题

image - 对于 SafeHtml,我们是否需要清理 <img src=link> 标签中的 "link",GWT?

php - MySQL 使用 127.0.0.1 但不使用本地主机?

tomcat - 带有 Tomcat 6 的 Jetspeed 2 在 Windows 7 上登录后不转发

windows - WUSA 2359302 安装 WMF 静默时的错误代码

python - 使用 PyOpenGL 从索引缓冲区渲染框出现问题