24位位图、BITMAPINFO结构中
biSizeImage是207828
biWidth 为275
biHeight 为251
为什么biSizeImage!=biWidth*biHeight*3(3是3个字节为一个像素意思)
我用for(int i=0;i<biWidth*biHeight;i++)来控制各个像素点灰度化,发现最后一行有一小半没有遍历到
所以我不知道biWidth 和biHeight为什么比真实的小了????
请高手指点迷津:)什么感谢 
//275*251*3=207075
//207828-207075=753/3=251

解决方案 »

  1.   

    此问题为四字节对齐问题导致.实际大小是
    ((biWidth*3+3)&~3)*biHeight=((275*3+3)&~3)*251=((825+3)&~3)*251=828*251=207828
      

  2.   

    为什么biSizeImage!=biWidth*biHeight*3(3是3个字节为一个像素意思)
    位图每行是4字节对齐的。所以不是乘以3
      

  3.   

    如上所说。biSizeImage = WIDTHBYTES(N*biWidth)*biHeightN为你位图的位数。
    #define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4)
      

  4.   

    DentistryDoctor:位图宽度必须是4的倍数,如果不是,它会自动补0的。----------------这就是真理!!!:)