有什么好一些的方法可以把 BMP 数据压缩并且网络发送出去也就是类似电子教室之类的,截取屏幕图像,发送出去,但是发现数据包太大,会严重影响响应时间,有什么方法可以把生成的 BMP 数据压缩后直接发送出去(而不是先保存成 BMP 文件,然后把文件压缩,然后把压缩的文件读取到数据缓冲区,再发送,这样太慢了),最好是数据直接压缩,然后将压缩的数据发送出去,有什么好的方法吗?有什么好的类库或者 LIB ?//试验了一下,抓取生成的 BMP 文件(1280*1024分辨率屏幕),有 5MB , 但简单的用画图工具另存为 jpeg ,变成 100K 左右,视抓取的内容而定,这也太夸张了吧, 5Mb数据为一幅图像,没法发送,实时性会很差。

解决方案 »

  1.   

    有损和无损两种方式有损的可以用jpeg无损的可以用zlib
      

  2.   

    静态图像压缩效果比较好的方法:JPEG2000和SPIHT,其中前者是最新的静态图像压缩标准,后者实现起来相对简单,两种算法的压缩质量差别不大,但是与jpeg相比,相同压缩比下,图像质量都会提高很多。联系:[email protected]
      

  3.   

    freeimage    cximage  都是很好的lib
      

  4.   

    自己修改视频窗口(不知道是否指这个)的程序,直接取得里面的图像。
    不然的话可能要给出视频窗口的坐标(也可以自动识别,有难度),写程序截图。然后转jpeg,转换方法楼上说调用第三方库或gdi+。"以前有个高手教我说,可以不一次性发一屏东西,一般情况下,屏幕的内容变化的只是一个小区域,可以将屏幕分成几块,发现哪一块内容有变化才发送" 
    游戏编程会用到这个。
      

  5.   

    第一帧最好也用libjpeg压成jpeg
    而且可以把颜色深度降低,分辨率降低
      

  6.   


    有关于 freeimage 如何让应用的例子吗?
      

  7.   

    简单一点的就是jpeg和zlib,复杂一点的就是H264,前两个都包含编码和解码部分,h264的解码器要单独找
      

  8.   

    不明白,为什么不直接把截屏的图片弄成jpg的?如果没办法还是用Zip的算法吧,这个算法很成熟而且是公开的,把数据压缩后不存文件而是直接发送。
      

  9.   


    能直接弄成 jpeg?jpeg 图片是不是要先解码为 BMP 才能显示?
      

  10.   

       我是刚注册的,已经写好一个JPEG解压缩VC程序(C++和汇编混编程  使用sse2优化)包括所有解码步骤,VLC解码,IDCT变换以及YUV-RGB;使用DirectDraw.   目前正在做解VLC部分的优化工作,这个礼拜我想把它发出来,请问在哪发源码?