gao shou zhi dian  xiao di bu sheng ganji

解决方案 »

  1.   

    我用c写过,你可以看下文件的读取和你要读取的图片的格式,按照格式读就能得到你要的矩阵。我只做过读bmp的......
      

  2.   

    请问你有读取BMP的源代码吗,直接得到的就是像素矩阵吗,可以把你的代码给我吗我给你加分谢谢了
      

  3.   


    HBITMAP hbmp=   (HBITMAP)::LoadImage(   NULL,strPathBmp,IMAGE_BITMAP,   0,   0, LR_LOADFROMFILE);      BITMAP bitmap;
    GetObject(hbmp,sizeof(BITMAP),&bitmap);
    Renderer::BitmapI *pMyBmp=Renderer::CreateBitmap(bitmap.bmWidth,bitmap.bmHeight);/**
    *得到为图数据到lpBmpData
    */
    int nBytesPix=bitmap.bmBitsPixel/8;
    int nBytesPixDest=4;
    int nCount=bitmap.bmHeight*bitmap.bmWidth*nBytesPix;
    BYTE *src=new BYTE [nCount];
    int n=GetBitmapBits(hbmp, nCount,src);
      

  4.   


     #include "atlimage.h"
    /**
    * 得到一图象数据的位图像素矩阵到ppBitmapBits,成功则返回true,否则返回false
    * @param filename[in]:文件名 可以是bmp,emf,png,jpg,tiff图象格式
    * @ppBitmapBits [out]:输出参数 位图矩阵
    * 调用示例:
    * void * pbmpBits = NULL;
    * GetBitmapBits( "c:\1.bmp",&pbmpBits )
    */
    bool GetBitmapBits(char  *filename,void ** ppBitmapBits )
    {
    /**
    * 使用CImage类装载图像, 并且转换为位图
    */

    CImage img;
    HRESULT hr = img.Load( filename );
    if( FAILED( hr ) )
    {
    return false ;
    } /**
    * 确定目标位图的尺寸
    */
    int width = img.GetWidth();
    int height = img.GetHeight();   /**
    * 创建内存DC
    */ 
    HDC hdcMem = ::CreateCompatibleDC( NULL ); /**
    * 使用DIBSection装载位图
    */
    BITMAPINFO * info = (BITMAPINFO *)malloc( sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256 );
    memset(info, 0, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256 );
    info->bmiHeader.biSize = sizeof( BITMAPINFOHEADER );
    info->bmiHeader.biWidth = width;
    info->bmiHeader.biHeight = height;
    info->bmiHeader.biPlanes = 1;
    info->bmiHeader.biBitCount = 32;
    info->bmiHeader.biCompression = BI_RGB;
    info->bmiHeader.biClrUsed = 0;
    info->bmiHeader.biClrImportant = 0; HBITMAP hbmp = CreateDIBSection(
    hdcMem, 
    info,
    DIB_RGB_COLORS,
    ppBitmapBits,
    NULL,
    0); free(info);
    if(!hbmp)
    {
    DeleteDC( hdcMem );
    return NULL;
    }
    SelectObject( hdcMem, hbmp ); /**
    * 将CImage类装载的图像内容绘制在hdc上
    */
    img.Draw(
    hdcMem,
    0,
    0,
    width,
    height ); //DeleteObject( hbmp );
    DeleteDC( hdcMem );
    return true ;
    }