请问用直接读二进制的方法,一行一行地读出每一个点的R,G,B的值,(图片是32的),最好是给点源代码?
   分不够再加

解决方案 »

  1.   

    简单啦..
    跳到BMP文件的位数据区,读出来然后遍历像素,搞定.
    只需注意扫描线是反转的就ok
      

  2.   

    哇,写到手软的哦,前天才在这写完一堆,huhuhu
      

  3.   

    #include <ifstream>
    using namespace std;ifstream in_file("test.bmp", ios::in|ios::binary);
    in_file.seekg(0, ios::end);
    int fsize = in_file.tellg();
    in_file.seekg(0);
    char * pBuf = new char[fsize+1];
    in_file.read(pBuf, fsize);
    in_file.close();LPBITMAPFILEHEADER lpfh = (LPBITMAPFILEHEADER)pBuf;
    LPBITMAPINFOHEADER lpih = (LPBITMAPINFOHEADER)(pBuf+sizeof(*lpfh));
    char * lpDib = lpfh->bfOffset;
    //从lpDib开始就是RGB的值了,注意它的排列顺序是B,G,R,还要注意每行的填充。
      

  4.   

    更正:char * lpDib = pBuf+lpfh->bfOffset;
    另外宽和高可以这样得到:lpih->biWidth, lpih->biHeight, lpih->biBitCount
      

  5.   

    不是吧?bfOffset?
    bfOffBits..
    不需要填充.因为是32Bit
      

  6.   

    不好意思,我说错了,是24 位的图像.
    To: 以上两位,谢谢你们,但是我怎么取出图像数据中每一个像素的Blue色(要一排一排的取)