各位帮忙给我看下下面的代码是16bit 图像转化成32bit 图像(16bit->32 bit )。
我感觉有点问题……
请大家帮看看,错在哪里?
说明:
out_frame_buffer 里存放的是16bit 图像数据
frame_buffer_size 为16bit 图像数据大小 (176X96X2)
图像的尺寸为:196X96
pTgtBuff 里是预装经转过后的32bit 缓冲区
unsigned char * pTgtBuff;
pTgtBuff = new unsigned char[frame_buffer_size*2];
memcpy((unsigned char *)pTgtBuff,(unsigned char *) out_frame_buffer, 176*96*2);
for(int i=0; i<176; i++)
{
short* pSubSrc=(short*) out_frame_buffer;
int *pSubTgt=(int *)pTgtBuff;
for(int k=0 ;k < 96; k++ )
{
char* pTgtPixel=(char*)pSubTgt;
pTgtPixel[0]= (((0x00001F)&(*pSubSrc ))<<3);
pTgtPixel[1]= (((0x0000FC)&(*pSubSrc))>>3);
pTgtPixel[2]= (((0x0000F8)&(*pSubSrc))>>8);
pTgtPixel[3]=0xFF;
pSubSrc++;
pSubTgt++;
}
out_frame_buffer = (unsigned char *)out_frame_buffer + 176*2;
pTgtBuff = (unsigned char *)pTgtBuff + 176*4;
}
谢谢各位……
[ 此贴被XChinux在2008-07-26 08:38重新编辑 ]