如题,在对话框的picture控件绘图,我现在可以保存为bmp格式,要保存为jpg格式怎么办?

解决方案 »

  1.   

    你需要jpeg压缩算法
    当然,你也可以直接使用GDI+的函数来实现
      

  2.   

    建议上网下载一个CxIMAGE,里面对各种格式都支持,免费的开源的,还有例子,在codeproject上面,我给你网址:http://www.codeproject.com/KB/graphics/cximage.aspx
    先调用CxImage(BYTE * buffer, DWORD size, DWORD imagetype);将buff传入,当然,也可以传入文件名,你自己看头文件;
    然后再调用 bool Save(const TCHAR* filename, DWORD imagetype);即可!很简单好用!
      

  3.   

    用GDI+转换图形格式    
    http://dev.csdn.net/article/50/50911.shtm
      

  4.   

    CxImage是第三方的一个非常好的库,可以对图像作很多需要的操作
      

  5.   

    用VC自带的CImage就可以了,方法是各种中最简单的。
      

  6.   

    不用gdi+,用gdi怎么实现呢,保存bmp格式的有一个函数就行了,
      

  7.   

    可以尝试自己写一个函数把bmp的位图转成jpg图片。
    只要知道jpg的文件格式就行,网上有很多介绍数据格式的。
      

  8.   

    void SaveToJpg2D(CString strFilePath)
    {
    CBitmapFile jpg;//此处是定义了一个现有类的对象 CBitmap  bitmap;
    CClientDC dc(this);
    CDC  memDC; memDC.CreateCompatibleDC(&dc);  //此处仅是赋值了保存区域的宽度和高度
    int Width = m_BitmapeCreate.x_pix;
    int Height = m_BitmapeCreate.y_pix; CRect rectSaveDev(0, 0, Width, Height);//设置保存矩形的设备坐标
    rectSaveDev.NormalizeRect();
    bitmap.CreateCompatibleBitmap(&dc, Width, Height); CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);//将位图选入设备环境 memDC.FillSolidRect(rectSaveDev, RGB(255,255,255));//绘图区域白色填充
    memDC.SetMapMode(MM_LOMETRIC);//设置映射模式
    memDC.SetViewportOrg(0,rectSaveDev.bottom);//设置视口坐标
    memDC.SetWindowOrg(m_windoworg);//设置窗口坐标 CRect rectSaveLog = rectSaveDev;
    memDC.DPtoLP(&rectSaveLog);//将保存区域的设备坐标转换为逻辑坐标
    rectSaveLog.NormalizeRect(); //====================
    //此处是你自己的绘图函数,绘图要在逻辑坐标中绘制
    //==================== memDC.SelectObject(pOldBitmap);
    LPTSTR lpFilePath = const_cast<LPTSTR>(strFilePath.operator LPCTSTR());
    jpg.SaveWindowAsFile(lpFilePath, JPG_FILE, &bitmap);
    }
      

  9.   

    我是想要把dc上绘制的图形直接保存为jpg或者png啊,非得用格式转换吗》
      

  10.   


    不需要用GDI+, 也不需要知道JPEG的编码算法, 直接使用jpeglib就可以了: 开源代码, 含Decoder和Encoder程序, 不仅仅可以用在PC上, 甚至可以用在嵌入系统上;