图象在硬盘中保存着,
建立一个基于单文档的工程,在不打开图象的情况下如何将图象的点像素值读取到一数组中呢?
图象是24位的BMP文件

解决方案 »

  1.   

    CFile file;
    file.Open(TEXT("XXX.bmp"),CFile::Read);
    HANDLE hMp=::CreateFileMapping(file.m_hFile,NULL,PAGE_READONLY,0,0,NULL);
    LPVOID pData=::MapViewOfFile(hMp,FILE_MAP_READ,0,0,0);
    LPBITMAPFILEHEADER pBPH;
             pBPH=(LPBITMAPFILEHEADER)pData;
    BYTE* pBits=(BYTE*)pData+pBPH->bfOffBits;//pBits就是你要的byte数组
    ////////////////////////////////////////////////////////////////////////////
    以上代码是我随手写来,你在加上一点错误判断。
      

  2.   

    谢谢yxz_lp() ( ) 信誉:100 
    我是这样创建的,完全用文件操作,也可以的
    unsigned char a[4],b[4];
    FILE* stream; //--
    char   c = '\n';
    errno_t err;if( (err = fopen_s( &stream, PathName, "rb" )) != 0 )
          return;
    else
       {
    fseek(stream,18,SEEK_SET);
    fread(&a,4,1,stream);
    fread(&b,4,1,stream); 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);
    }
    }
    }
    }
      

  3.   

    if( (err = fopen_s( &stream, PathName, "rb" )) != 0 )
    ~。~这个也叫不打开~。~
      

  4.   

    knightshenbin(勤练内功)
    能否说明白些?
    不很懂的说.
      

  5.   

    livedeal(怀念) :
    我的做法没错误吧?
    谢谢