HI EveryOne,
I was able to solve the problem of unpaking the DIB to Buffer, but now i want to split RGB of the buffer to three different array.
Please help me do that....
Code:
BOOL CAVIDEMODlg::SplitImageAddToFrame(LPBITMAPINFOHEADER pbmih){
int s,x,y;
BITMAPFILEHEADER bmfh;
x=pbmih->biWidth;
y=abs(pbmih->biHeight);
bmfh.bfType=0x4d42;
bmfh.bfReserved1=bmfh.bfReserved2=0;
if (pbmih->biClrUsed==0)
switch (pbmih->biBitCount) {
case 1:bmfh.bfOffBits=8;break;
case 4:bmfh.bfOffBits=64;break;
case 8:bmfh.bfOffBits=1024;break;
case 24:bmfh.bfOffBits=0;break;
case 16:
case 32:bmfh.bfOffBits=pbmih->biCompression==BI_RGB?12:0;
}
else
bmfh.bfOffBits=pbmih->biClrUsed*4;
bmfh.bfOffBits+=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
if (pbmih->biSizeImage==0) {
switch (pbmih->biBitCount) {
case 1:s=(x+7)/8;break;
case 4:s=(x+1)/2;break;
case 8:s=x;break;
case 16:s=x*2;break;
case 24:s=x*3;break;
case 32:s=x*4;
}
bmfh.bfSize=bmfh.bfOffBits+(s+3)/4*4*y;
} else {
bmfh.bfSize=bmfh.bfOffBits+pbmih->biSizeImage;
}
DWORD ImageSize = ((DWORD)bmfh.bfSize-sizeof(BITMAPFILEHEADER));
LPBYTE pImage = (LPBYTE )malloc(ImageSize);
// pImage is buffer of Image data, now i want to seprate RGB from the buffer
memcpy(pImage,pbmih,ImageSize);
if(!pImage){
return FALSE;
}
//return fclose(fp);
return TRUE;
}