如题 ,我由于某些原因,必须自己解码,麻烦大家谁以前写过 ,给个源码!!!

解决方案 »

  1.   

    我只有一些VB的PNG到BMP的代码,而且写的很复杂。
    c的建议年看看GIMP的代码、
      

  2.   

    GDI+ 也不能用?
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);Png2Bmp( L"e:\\fish.png", L"e:\\fish.bmp" );
    #include "gdiplus.h"
    using namespace Gdiplus;
    #pragma comment(lib, "gdiplus.lib")INT GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
    {
    UINT num = 0; // number of image encoders UINT size = 0; // size of the image encoder array in bytes ImageCodecInfo* pImageCodecInfo = NULL; GetImageEncodersSize(&num, &size); if(size == 0) 
    {
    return -1; // Failure 
    } pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
    if(pImageCodecInfo == NULL)
    {
    return -1; // Failure
    }
    GetImageEncoders(num, size, pImageCodecInfo); for(UINT j = 0; j < num; ++j)
    {
    if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
    {
    *pClsid = pImageCodecInfo[j].Clsid;
    free(pImageCodecInfo);
    return j; // Success
    }
    }
    free(pImageCodecInfo);
    return -1; // Failure
    }void Png2Bmp( const LPCWSTR lpczPNGFilePath, LPCWSTR lpBmpPath)
    {

    CLSID encoderClsid;
    Status stat;
    Image* image = NULL;
    image = Bitmap::FromFile( lpczPNGFilePath, TRUE);
    GetEncoderClsid(L"image/bmp", &encoderClsid);
    stat = image->Save( lpBmpPath, &encoderClsid, NULL);
    delete image;
    }
      

  3.   

    Cimage image;
    iamge.load();
    image.save();
      

  4.   

    #include <atlimage.h>CImage image;
    image.Load(_T("PNG文件名称");
    image.Save(_T("BMP文件名称");