[R] HBitmap <-> String
Posté : sam. 03 sept. 2011 18:41
Alors voila, je reviens avec une nouvelle question.
J'arrive à convertir un bitmap (capture d'écran) en Chaîne de caractères (représentant les pixels), mais pas le contraire.
Mon but est de pourvoir transmettre une image par TCP sans passer par le disque dur (pour faire une sorte de VNC).
J'imagine qu'il faudra utiliser les fonction d'allocation dynamique de mémoire. Avec un autre langage, j'aurai pu faire quelque chose, mais la, j'ai du mal! (C'est la qu'on se rend compte de l'importance du typage!)
Je vous montre mon code:
J'arrive à convertir un bitmap (capture d'écran) en Chaîne de caractères (représentant les pixels), mais pas le contraire.
Mon but est de pourvoir transmettre une image par TCP sans passer par le disque dur (pour faire une sorte de VNC).
J'imagine qu'il faudra utiliser les fonction d'allocation dynamique de mémoire. Avec un autre langage, j'aurai pu faire quelque chose, mais la, j'ai du mal! (C'est la qu'on se rend compte de l'importance du typage!)
Je vous montre mon code:
Code : Tout sélectionner
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
_GDIPlus_Startup()
; ##############################################################
$hBitmap = _ScreenCapture_Capture()
$bitmap = _GDIPlus_BitmapCreateFromHBitmap($hBitmap)
$bitmapData = _GDIPlus_BitmapLockBits($bitmap, 0, 0, @DesktopWidth, @DesktopHeight, $GDIP_ILMREAD, $GDIP_PXF24RGB)
$Scan0 = DllStructGetData($bitmapData, "Scan0")
_GDIPlus_BitmapUnlockBits($bitmap, $bitmapData)
$v_BufferA = DllStructCreate("byte[" & @DesktopWidth * @DesktopHeight * 3 & "]", $Scan0) ; Create DLL structure for all pixels
$AllPixels = DllStructGetData($v_BufferA, 1)
ConsoleWrite(StringLen($AllPixels) & @CRLF) ; Final pixels string (Binary) de forme: 0x111111222222333333444444 ... (RGB)
_GDIPlus_BitmapDispose($bitmap)
_WinApi_DeleteObject($hBitmap)
; ##############################################################
; ##############################################################
_GDIPlus_Shutdown()