问大家一个问题呗。我现在手里有一个一大堆PNG图片的打包文件,PNG都是打包了!然后我现在自己能将每一张PNG图片的信息存入内存中,我现在就是想把内存中的这块PNG数据转换成BMP数据,不知道如何转换。求高手指点了!~~~

解决方案 »

  1.   

    直接用GDI+   几行代码搞定,load一下,然后调用编码函数,然后保存就这么简单
      

  2.   

    方法很多,可以使用Cimage 的Save方法。
    也可以画入HDC后就是BMP。
      

  3.   

    你好!额,比如你现在有一块 char* png 的数据,然后给你一个char*BMP的指针,如何转换呀?GDI+我没有用过呀!能大概给我一个DEMO吗?或者大概的实例代码。谢谢啦!
      

  4.   

    用opencv或cximage都可以,直接读取然后存储即可
      

  5.   

    确实用Gdi+比较简单,Load的代码不写了;给点保存的代码,让你看下。
    CBitmap Bmp;
    ...................
           //保存为相应的格式
    Bitmap* pImage = Bitmap::FromHBITMAP(Bmp, NULL);
    if ( pImage )
    {
    // 保存个bmp图片
    BOOL bFlag = FALSE;
    CLSID bmpClsid;
    GetEncoderClsid(L"image/bmp", &bmpClsid);
    if ( Ok == pImage->Save(strPath, &bmpClsid, NULL) )
    bFlag = TRUE; //保存为jpeg文件
    //  CLSID pngClsid;
    //  GetEncoderClsid(L"image/jpeg", &pngClsid);
    //  EncoderParameters encoderParameters;
    //  encoderParameters.Count = 1;
    //  encoderParameters.Parameter[0].Guid = EncoderQuality;
    //  encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
    //  encoderParameters.Parameter[0].NumberOfValues = 1;
    //  ULONG quality = 99;
    //  encoderParameters.Parameter[0].Value = &quality;
    //  if ( Ok == pImage->Save(strPath, &pngClsid, &encoderParameters))
    //  {
    //  //m_pMicroBlogPublishDlg->OnCaptureScreen(szTempFileName, wszBmp);
    //  }
    //delete pImage;
    }