Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2011 14:17:10

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Screenshot

Здравствуйте! Нужно сделать скриншот экрана, для последующей загрузки на сервер. Нашел такое решение:

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) #массив байт
Только bmpstr равен порядка 5мб… Подскажите как можно оптимизировать или сжать изображение для передачи на сервер?

PS: варианты с PIL, wx, PyQT и др. не рассматриваются



Офлайн

#2 Ноя. 27, 2011 15:36:26

cutwater
От:
Зарегистрирован: 2009-01-08
Сообщения: 444
Репутация: +  19  -
Профиль   Отправить e-mail  

Screenshot

PS: варианты с PIL, wx, PyQT и др. не рассматриваются

Why?



Офлайн

#3 Ноя. 27, 2011 15:57:47

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Screenshot

Потому что реализовать нужно посредствами win32 )



Офлайн

#4 Ноя. 28, 2011 10:04:09

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Screenshot

Насколько я помню winapi, вменяемое сжатие туда добавили только после GDI+
например (это BMP->PNG):
http://dotnet-snippets.de/dns/gdi-speichern-eines-png-SID814.aspx
И сразу вопрос - зачем отправлять данные на сервер именно картинкой? Можно сжать BMP (У винды есть поддержка zip) и отправить сжатые данные.

Офлайн

#5 Ноя. 29, 2011 13:26:26

r3m1x
От:
Зарегистрирован: 2011-07-30
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Screenshot

Можно и не картинкой… Подскажите плиз как сжать с помощью zip?



Офлайн

#6 Ноя. 29, 2011 13:35:24

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version