各位VC高手,本人最近在研究CRectTracker橡皮筋类并希望做一个类似于QQ屏幕截图的程序,已经能够成功截取屏幕,但是截取后只知道如何保存成位图的格式,不知道如何压缩后保存成JPG 或 GIF等压缩格式。上网搜索了一下,发现有些用 SDK的例子,用上GDI等等。但需要下载SDK安装,比较麻烦……也有些用上了CxImage,但似乎效率不高……
而且本人也不清楚,哪种SDK是比较稳定的,哪个版本的CxImage更完善。
    本人希望,截图后,直接把得到的位图数据在内存中转换成JPG或GIF格式,然后保存起来。
但是网上的代码都不完全,直接套用BUG多。 希望大家能出出主意,毕竟这种方法也不是什么秘密了,有源码的最好。

解决方案 »

  1.   

    一般用CxImage或者GDI+
    直接按照文件格式转换也可,不过要先了解各种图片格式。
      

  2.   

    推荐 freeimagehttp://freeimage.sourceforge.net/download.html 
      

  3.   

    这有一个例子http://www.codeproject.com/KB/graphics/freeimage_display_demo.aspx 
      

  4.   

    用ATL 中的CImage类处理就可以
      

  5.   

    建设用CImage类吧,确实很简单。
      

  6.   

    楼上2位朋友,能否说说CImage 里那个函数可以做转换?
    而且,哪里有好一点的版本下载?
      

  7.   


    #include <atlimage.h>...
    CImage img;
    img.Attach(hBitmap); // 
    img.Save("e:\\1.jpg");
      

  8.   

    vc6.0 中没有包含CImage类, 必须是vc6.0以上版本才支持
      

  9.   

    我也为此问题而烦恼!
    实际上我认为大约要换vc.net
    但这个东西是很有问题的.其框架令人难以接受!
    有可能的一条路大约是IPicture.但实际情况是解决不了!反正我试过了.放弃了.有人可以继续不?
      

  10.   

    gdi+对这些操作比较方便,参考http://www.vckbase.com/document/viewdoc/?id=470
      

  11.   


    下载实例后发现,感觉它还是把已经读写到磁盘的文件做个显示和转换而已 而我需要的是在截取屏幕得到 bmp位图数据 的同时,立即进行转换一步到位,不用保存到磁盘。 
    还是我看得还不够透彻? 请问该实例内存转换的函数是哪个呢?
      

  12.   

    你可以利用gdi+将位图转换到IStream 然后操作IStream就可以了啊