我现在有了一个程序能够捕捉到一写图片了 ,可以把他们存储为BMP格式的,但是我觉得这格式占用的空间太大了 ,所以想把它转换为JPG格式的,我应该怎么做啊??有没有之间生成JPG格式的函数的啊??

解决方案 »

  1.   

    用CXimage,里面有转换的demo的,比较简单的
      

  2.   

    用GDI+直接转换或者找c转换算法
      

  3.   

    以下代码就可以,.net2003环境,如果你用vc6.0,把.net2003下"atlImage.h"拷贝出来就可以了。#include "atlImage.h"
    CImage  image;
    image.Load( "c:\\bmp.bmp");
    HRESULT b = image.Save( "c:\\jpg.jpg" ); 
      

  4.   

    CImage类内部实际上也是使用的GDI+ Image类,不过它作了些封装,使用起来更方便了。
      

  5.   

    使用gdi+的Image,bitmap类也比较方便!
      

  6.   

    CString sImgName;
    CLSID jpgClsid;
    GetEncoderClsid(L"image/jpeg", &jpgClsid);

    Rect rect(0,0,m_ImageData.nWidth ,m_ImageData.nHeight);
    Bitmap bmp(m_ImageData.nWidth,m_ImageData.nHeight);
    Graphics *gs=Graphics::FromImage(&bmp); gs->DrawImage(m_image,rect);
    gs->Flush();
    GetEncoderClsid(L"image/jpeg", &jpgClsid);
    sImgName=sPath+"testImg.jpg";
    bmp.Save(sImgName.AllocSysString(),&jpgClsid);
      

  7.   

    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
    }