Sto provando a convertire hBitmap in array di byte ma non voglio utilizzare TBitmap dall'unità Graphics. La mia immagine di input è 128x64x32 bit.Conversione di HBitmap in array di byte in Delphi
var TheBits: array of array of Cardinal;
begin
with info.bmiHeader do begin
biWidth:=131;
biHeight:=64;
biSize:=SizeOf(TBITMAPINFOHEADER);
biCompression:=BI_RGB;
biBitCount:=32;
biPlanes:=1;
biSizeImage:=0;
end;
DC := CreateCompatibleDC(0);
SetLength(TheBits, 128, 64);
GetDIBits(DC, BmpHandle, 0, 64,@TheBits[0][0],Info,DIB_RGB_COLORS);
Questo mi dà una bella immagine (a testa in giù, naturalmente), ma ho dovuto mettere 131 in biWidth che in realtà non ha senso per me. Perché non può essere 128?
+1 Nizza. In realtà direi che @ Tom è stato sfortunato qui! –
Assicurarsi inoltre che la larghezza della riga sia un multiplo di 4 byte. In questo caso, è già dovuto essere un'immagine a 32 bpp. Se era 24bpp, la larghezza avrebbe dovuto essere arrotondata per eccesso. – Deanna
Impossibile creare in qualche modo un array 2D che occupa un singolo blocco di memoria? – Tom