去这里看看:http://www.vchelp.net/source/source_gra.htm

解决方案 »

  1.   

    JPEG文件编码.把bitmap 格式压缩成JPEG格式
    http://www.copathway.com/vchelp/view_article.asp?ft=2&article_id=269
      

  2.   

    http://www.vckbase.com/code
    jpeglib.zip可以显示JPEG文件,进行JPEG和BMP之间的相互转换,并可以保存为灰度JPG图像
      

  3.   

    #include <Stdio.h>
    #include <Objbase.h>
    #include <Windows.h>
    #include <Gdiplus.h>
    #include <GdiPlusEnums.h>
    using namespace Gdiplus;
    #pragma comment(lib,"gdiplus")
    // Helper functions
    int GetCodecClsid(const WCHAR*, CLSID*);int main()
    {
    CLSID              codecClsid;
    EncoderParameters  encoderParameters;
    long               quality;
    Status             stat;
    GdiplusStartupInput gdiplusStartupInput; 
    ULONG gdiplusToken; 
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); 
    {
    // Get an image from the disk.
    Image image(L"F:\\ddd.bmp");

    // Get the CLSID of the JPEG codec.
    GetCodecClsid(L"image/jpeg", &codecClsid);

    // Before we call Image::Save, we must initialize an
    // EncoderParameters object. The EncoderParameters object
    // has an array of EncoderParameter objects. In this
    // case, there is only one EncoderParameter object in the array.
    // The one EncoderParameter object has an array of values.
    // In this case, there is only one value (of type LONG)
    // in the array. We will set this value to 0, 50, and 100.

    encoderParameters.Count = 1;
    encoderParameters.Parameter[0].Guid = EncoderQuality;
    encoderParameters.Parameter[0].Type = EncoderParameterValueTypeLong;
    encoderParameters.Parameter[0].NumberOfValues = 1;

    // Save the image as a JPEG with quality level 0.
    quality = 0;
    encoderParameters.Parameter[0].Value = &quality;
    stat = image.Save(L"Shapes001.jpg", &codecClsid, &encoderParameters);

    if(stat == Ok)
    wprintf(L"%s saved successfully.\n", L"Shapes001.jpg");
    else
    wprintf(L"%d  Attempt to save %s failed.\n", stat, L"Shapes001.jpg");

    // Save the image as a JPEG with quality level 50.
    quality = 50;
    encoderParameters.Parameter[0].Value = &quality;
    stat = image.Save(L"Shapes050.jpg", &codecClsid, &encoderParameters);

    if(stat == Ok)
    wprintf(L"%s saved successfully.\n", L"Shapes050.jpg");
    else
    wprintf(L"%d  Attempt to save %s failed.\n", stat, L"Shapes050.jpg");

    // Save the image as a JPEG with quality level 100.
    quality = 100;
    encoderParameters.Parameter[0].Value = &quality;
    stat = image.Save(L"Shapes100.jpg", &codecClsid, &encoderParameters);

    if(stat == Ok)
    wprintf(L"%s saved successfully.\n", L"Shapes100.jpg");
    else
    wprintf(L"%d  Attempt to save %s failed.\n", stat, L"Shapes100.jpg");
    }
    GdiplusShutdown(gdiplusToken);
    return 0;
    } // main
    int GetCodecClsid(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(int j = 0; j < num; ++j)
       {
          if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
          {
             *pClsid = pImageCodecInfo[j].Clsid;
             return j;  // Success
          }    
       } // for   return -1;  // Failure} // GetCodecClsid
    //download gdiplus.dll 
    //http://www.microsoft.com/downloads/release.asp?releaseid=32738
    //Platform SDK Redistributable: GDI+ RTM