Форум сайта python.su
Здравствуйте! Нужно сделать скриншот экрана, для последующей загрузки на сервер. Нашел такое решение:
hwnd = win32gui.GetDesktopWindow()
hwndDC = win32gui.GetWindowDC(hwnd)
mfcDC = win32ui.CreateDCFromHandle(hwndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC, w, h)
saveDC.SelectObject(saveBitMap)
saveDC.BitBlt((0, 0), (w, h), mfcDC, (l, t), win32con.SRCCOPY)
bmpstr = saveBitMap.GetBitmapBits(True) #массив байт
Офлайн
PS: варианты с PIL, wx, PyQT и др. не рассматриваются
Why?
Офлайн
Потому что реализовать нужно посредствами win32 )
Офлайн
Насколько я помню winapi, вменяемое сжатие туда добавили только после GDI+
например (это BMP->PNG):
http://dotnet-snippets.de/dns/gdi-speichern-eines-png-SID814.aspx
И сразу вопрос - зачем отправлять данные на сервер именно картинкой? Можно сжать BMP (У винды есть поддержка zip) и отправить сжатые данные.
Офлайн
Можно и не картинкой… Подскажите плиз как сжать с помощью zip?
Офлайн
Офлайн