刚刚才开始看,还没有找到什么资料,目前需要知道的几个问题有:
1.Jpg图片文件的格式是什么样的,如有哪些属性,分别对应的存储位置等
2.把bmp图片转化为jpg图片的算法不过貌似更简单的一个方法是找到Win32接口直接将bmp转化为jpg,mfc接口的不行。

解决方案 »

  1.   

    用CImage CImage是基于ATL的#include <atlimage.h>CImage img;
    img.Load(_T("图片.bmp"));
    img.Save(_T("图片.jpg"));
      

  2.   

    ATL不能使用,顶多能用Win32 API
      

  3.   

    为什么不能使用ATL?谁的限制?
    只要vc版本高于6.0,就能用CImage,这个类已经是ATL和MFC共享的了,封装的是GDI+库,包含atlimage.h就可以了,无论是不是API编程。
      

  4.   

    不让使用也可以,把atlimage.h的代码复制到自己的头文件里再用。真不知道是谁这么傻不准使用,要是有人不准使用window.h来编程怎么办
      

  5.   

    晕,那你可以参考下cximage(开源的),bmp和jpg的编解码里面都有
      

  6.   

     我是用OpenCV做  OpenCV提供一个统一的指针,可以操作jpg bmp等好多格式的图片!
      

  7.   

    能用GDI+不? Win32下应该可以的 GDI+里面Bitmap Image类可以实现转换对于jpg文件具体格式不清楚 因为jpg根据不同的压缩方法又分为很多种 这个需要看图像处理 图像压缩部分吧 
      

  8.   

    使用开源CXimage库,关于CXimage库使用方法网络上很多,google一下,http://blog.csdn.net/byxdaz/archive/2005/11/29/539221.aspx
    CxImage m_cxImage; 
    cxImage.Load(bmpfilename,CXIMAGE_FORMAT_BMP);
    cxImage.Save(jpgfilename,CXIMAGE_FORMAT_JPG); 
      

  9.   

    GDI+可以完成的
    合并两张jpg图片为一张jpg图片,思路是先把两张图片jpg图片都转化成bmp图片,然后把两张bmp图片合并成一张bmp图片,然后是把这张bmp图片转化为jpg图片。一。jpg,bmp互相转化
    /*********************************
    format:bmp转为jpg, format为image/jpeg,jpg转为bmp,format为image/bmp
    strDst为最终转化结果的图片路径
    strSrc为原来图片的路径
    **********************************/
    BOOL ConvertPic(const WCHAR *format, const CString &strDst, const CString &strSrc)
    {
    BOOL bConvert = false;
    CLSID clsid;
    int nRet = 0;
    nRet = GetEncoderClsid(format,&clsid);  //得到CLSID
    USES_CONVERSION;
    if (nRet>=0)
    {
      Image image(A2W(strSrc));
      image.Save(A2W(strDst),&clsid,NULL);
      bConvert = true;
    }
    return bConvert;
    }
    其中GetEncoderClsid函数如下:
    /*****************************************************
    返回值为-1表示失败,其他为成功
    ******************************************************/
    int GetEncoderClsid(const WCHAR *format, CLSID *pClsid)
    {
    int nRet = -1;
    ImageCodecInfo * pCodecInfo = NULL;
    UINT nNum = 0,nSize = 0;
    GetImageEncodersSize(&nNum,&nSize);
    if (nSize<0)
    {
      return nRet;
    }
    pCodecInfo = new ImageCodecInfo[nSize];
    if (pCodecInfo==NULL)
    {
      return nRet;
    }
    GetImageEncoders(nNum,nSize,pCodecInfo);
    for (UINT i=0; i<nNum; i++)
    {
      if (wcscmp(pCodecInfo[i].MimeType,format)==0)
      {
       *pClsid = pCodecInfo[i].Clsid;
       nRet = i;   delete[] pCodecInfo;
       return nRet;
      }
      else
      {
       continue;
      }
    }
    delete[] pCodecInfo;
    return nRet;
    }
    bmp转化为jpg
    ConvertPic(L"image/jpeg","c:\\1.jpg","c:\\1.bmp")
    jpg转化为bmp
    ConvertPic(L"image/bmp","c:\\1.bmp","c:\\1.jpg")
      

  10.   

    我已经在Codeproject上下下来了,但是好像是dll库,而且好多,目前我还不知道哪个文件是编码的。
      

  11.   

    哈哈,你如果不是需要源代码的话直接用gdi或者gdi+就行了,里面有转换的函数!
      

  12.   

    使用jpeglib库(开源项目,含SourceCode),其中有Decode和Encode,和平台无关----甚至嵌入系统中也在使用这个库
      

  13.   

    这个貌似我也已经下载下来了,粗略的看了一下文件名称,好像和CXimage是一样的东西。
    目前还是不知道Encode在哪一部分,没有看
      

  14.   

    jpg一般是基于DCT编码的,要进行转换,得将bmp的图像数据进行DCT算法压缩编码。
      

  15.   

    现在发现可以使用COM组件,但是我不会用IImageEncoder类,从来没有使用过COM
      

  16.   

    关于CXimage的用法
    1、VC的编译环境中加入 cximage.lib j2k.lib jasper.lib jbig.lib Jpeg.lib png.lib Tiff.lib zlib.lib 
    2、包含库文件和头文件:include目录下所有文件和tiff目录下的所有文件,其中最主要的文件是include目录下的xiamge.h,主要操作函数声明都包含在这个头文件中. 
    3、用法实例: 
      CxImage m_cxImage; 
      cxImage.Load(jpgfilename,CXIMAGE_FORMAT_BMP); 
      cxImage.Save(bmpfilename,CXIMAGE_FORMAT_JPG);
      

  17.   

    如果有比较多的图像格式转换,建议使用FreeImage
      

  18.   

    ShellExecute调出mspaint
    模拟鼠标操作,文件-》另存为-》选择后缀名JPG-》保存
      

  19.   

    到目前为止没发现好用的办法,IImagingFactory提供的接口只能将32bpp的图片转化为JPG,下次有时间再附上代码 
      

  20.   

    能提供下IImagingFactory的iimaging.lib库吗?[email protected]
      

  21.   

    能提供下IImagingFactory的iimaging.lib库吗?[email protected]