L
landersxu
Unregistered / Unconfirmed
GUEST, unregistred user!
BOOL LimbPatternM4(HWND hWnd)
{
DWORD BufSize;
LPBITMAPINFOHEADER lpImgData;
LPSTR lpPtr;
HLOCAL hTempImgData;
LPBITMAPINFOHEADER lpTempImgData;
LPSTR lpTempPtr;
HDC hDc;
HFILE hf;
LONG x,y;
DWORD i,j;
unsigned char num;
BYTE M4Pattern[16][16];
for(i=0;i<8;i++)
for(j=0;j<8;j++)
M4Pattern[j]=4*BayerPattern[j];
for(i=8;i<16;i++)
for(j=0;j<8;j++)
M4Pattern[j]=4*BayerPattern[i-8][j]+2;
for(i=0;i<8;i++)
for(j=8;j<16;j++)
M4Pattern[j]=4*BayerPattern[j-8]+3;
for(i=8;i<16;i++)
for(j=8;j<16;j++)
M4Pattern[j]=4*BayerPattern[i-8][j-8]+1;
BufSize=bf.bfSize-sizeof(BITMAPFILEHEADER);
if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)
{
MessageBox(hWnd,"Error alloc memory!","Error Message",MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);
lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);
//copy image data
memcpy(lpTempImgData,lpImgData,BufSize);
for(y=0;y<bi.biHeight;y++){
lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);
lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);
for(x=0;x<bi.biWidth;x++){
num=(unsigned char)*lpPtr++;
if ( num > M4Pattern[y&15][x&15])
*(lpTempPtr++)=(unsigned char)255;
else *(lpTempPtr++)=(unsigned char)0;
}
}
if(hBitmap!=NULL)
DeleteObject(hBitmap);
hDc=GetDC(hWnd);
hBitmap=CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)lpTempImgData, (LONG)CBM_INIT,
(LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER) +NumColors*sizeof(RGBQUAD),
(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);
hf=_lcreat("c://limbm4.bmp",0);
_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));
_lwrite(hf,(LPSTR)lpTempImgData,BufSize);
_lclose(hf);
ReleaseDC(hWnd,hDc);
LocalUnlock(hTempImgData);
LocalFree(hTempImgData);
GlobalUnlock(hImgData);
return TRUE;
}
上面是一段M4抖动的C代码,有那位能帮我译成DELPHI的,所有的分都给了。
{
DWORD BufSize;
LPBITMAPINFOHEADER lpImgData;
LPSTR lpPtr;
HLOCAL hTempImgData;
LPBITMAPINFOHEADER lpTempImgData;
LPSTR lpTempPtr;
HDC hDc;
HFILE hf;
LONG x,y;
DWORD i,j;
unsigned char num;
BYTE M4Pattern[16][16];
for(i=0;i<8;i++)
for(j=0;j<8;j++)
M4Pattern[j]=4*BayerPattern[j];
for(i=8;i<16;i++)
for(j=0;j<8;j++)
M4Pattern[j]=4*BayerPattern[i-8][j]+2;
for(i=0;i<8;i++)
for(j=8;j<16;j++)
M4Pattern[j]=4*BayerPattern[j-8]+3;
for(i=8;i<16;i++)
for(j=8;j<16;j++)
M4Pattern[j]=4*BayerPattern[i-8][j-8]+1;
BufSize=bf.bfSize-sizeof(BITMAPFILEHEADER);
if((hTempImgData=LocalAlloc(LHND,BufSize))==NULL)
{
MessageBox(hWnd,"Error alloc memory!","Error Message",MB_OK|MB_ICONEXCLAMATION);
return FALSE;
}
lpImgData=(LPBITMAPINFOHEADER)GlobalLock(hImgData);
lpTempImgData=(LPBITMAPINFOHEADER)LocalLock(hTempImgData);
//copy image data
memcpy(lpTempImgData,lpImgData,BufSize);
for(y=0;y<bi.biHeight;y++){
lpPtr=(char *)lpImgData+(BufSize-LineBytes-y*LineBytes);
lpTempPtr=(char *)lpTempImgData+(BufSize-LineBytes-y*LineBytes);
for(x=0;x<bi.biWidth;x++){
num=(unsigned char)*lpPtr++;
if ( num > M4Pattern[y&15][x&15])
*(lpTempPtr++)=(unsigned char)255;
else *(lpTempPtr++)=(unsigned char)0;
}
}
if(hBitmap!=NULL)
DeleteObject(hBitmap);
hDc=GetDC(hWnd);
hBitmap=CreateDIBitmap(hDc, (LPBITMAPINFOHEADER)lpTempImgData, (LONG)CBM_INIT,
(LPSTR)lpTempImgData+sizeof(BITMAPINFOHEADER) +NumColors*sizeof(RGBQUAD),
(LPBITMAPINFO)lpTempImgData, DIB_RGB_COLORS);
hf=_lcreat("c://limbm4.bmp",0);
_lwrite(hf,(LPSTR)&bf,sizeof(BITMAPFILEHEADER));
_lwrite(hf,(LPSTR)lpTempImgData,BufSize);
_lclose(hf);
ReleaseDC(hWnd,hDc);
LocalUnlock(hTempImgData);
LocalFree(hTempImgData);
GlobalUnlock(hImgData);
return TRUE;
}
上面是一段M4抖动的C代码,有那位能帮我译成DELPHI的,所有的分都给了。