Подтвердить что ты не робот

Скриншот Python windows 7 без PIL

Я хочу сделать снимок экрана с помощью python.

Я пробовал использовать PIL, но поскольку я использую 64-битные окна и python, PIL не работает (я мог найти только 32-битные версии PIL). Кстати, я использую python 2.7.1.

Я хочу снять скриншот, на самом деле не имеет значения, насколько это возможно, если скорость может занять более 1 секунды. Предпочтительно, он также должен иметь возможность обрезать область, в которой требуется скриншот, но это не имеет особого значения.

Основная проблема заключается в том, что я бегу на 64-битной, и многие вещи кажутся несовместимыми с этим. Я действительно не хочу возвращаться к 32-битной, хотя, если это вообще возможно. Существуют ли какие-либо программы или модули, которые могут это сделать?

4b9b3361

Ответ 1

Получить PIL для win-amd64-py2.7 на http://www.lfd.uci.edu/~gohlke/pythonlibs/#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')

Ответ 2

32- или 64-разрядная версия Windows здесь неактуальна; это "бит-версия" Python и его модулей. Если вы используете 32-битный скомпилированный Python, 32-битный скомпилированный PIL будет отлично работать в 64-битной Windows.

С другой стороны, если вы используете 64-битный скомпилированный Python, вам нужно найти или выполнить компиляцию 64-битной скомпилированной версии PIL для соответствия.

Edit:

Вы можете скачать 64-битную версию PIL из http://www.lfd.uci.edu/~gohlke/pythonlibs/ - в частности, вы хотите PIL-1.1.7.win -amd64-py2.7.exe