下面是我写的一段从一图象(24位BMP)文件中读取像素信息的代码,
请大家看看有什么不对的地方FILE* stream; //--
char   c = '\n';
errno_t err;if( (err = fopen_s( &stream, PathName,/*图象文件*/ "rb" )) != 0 )
      return;
else
{
         fseek(stream,18,SEEK_SET); 
m_lWidth=lRow; //图象高
m_lHeight=lCol; //图象宽传递近来的! fseek(stream,54,SEEK_SET); //找到像素开始位置
for(int i=0;i<m_lHeight;i++)
{
for(int j=0;j<m_lWidth;j++)
{
for(int k=0;k<3;k++)
{
fread(&m_iRGB[m_lHeight-1-i][j][k],1,1,stream);
}
}
}
}

解决方案 »

  1.   

    需注意的是 24 位BMP图像每行字节好象为 4 的倍数,不一定就是 m_lWidth*3 个字节。
    for(int i=0;i<m_lHeight;i++)
    {
    for(int j=0;j<m_lWidth;j++)
    {
      for(int k=0;k<3;k++)
      {
       fread(&m_iRGB[m_lHeight-1-i][j][k],1,1,stream);
      }
    }
    //此处需判断已读字节数是否为 4 的倍数,若不是,需要跳过未使用的字节
    }具体记不清了,可以查查相关资料