为什么MFC程序读出来的像素值跟实际不一样

![图片说明](https://img-ask.csdn.net/upload/201508/16/1439729829_595253.png)图片说明
可以从程序断点处看到2行13列的像素值是255,255代表白色,但是用ps打开图片,很清楚2行13列是黑色,这不是矛盾吗,纠结中,求大手解决

程序呢,断点呢,建议上传程序和图像文件到网盘才好判断。

图片说明

BOOL CSummerPJCarDoc::ReadBMP(LPCTSTR lpszPathName)
{
CFile file;
LPathName = lpszPathName;
long lTotal = 0;

file.Open(lpszPathName, CFile::modeRead);

file.Read(&bmpFH, sizeof(BITMAPFILEHEADER));
lpbmi = (LPBITMAPINFO)new char[sizeof(BITMAPINFO)+4 * (1 << 8)];
file.Read(lpbmi, sizeof(BITMAPINFOHEADER));
m_nColorBits = lpbmi->bmiHeader.biBitCount;
imageHeight = lpbmi->bmiHeader.biHeight;
imageWidth = lpbmi->bmiHeader.biWidth;
if (m_nColorBits == 8)
{
    lTotal = imageWidth*imageHeight;
    file.Read(&(lpbmi->bmiColors[0]), 256 * 4);
}
else if (m_nColorBits == 24)
{
    lTotal = imageWidth*imageHeight * 3;
}
else
{
    file.Close();
    return FALSE;
}
m_pBits = new unsigned char[lTotal];
file.Read(m_pBits, lTotal);
file.Close();
return TRUE;

}
程序在这里

一般来说,是你计算下标错误了,实际不可能出现你所描述的情况。
你再检查一下所有的图像数据,我只能怀疑你对 BMP 数据格式的了解有限。这不是程序源代码的问题!

bmp格式的图像,原点是图像的左下角,这个你注意一下