将截取的内容压缩
答:一般常用的方法都是进行分辨率的降低和图片格式的转换;一般一个1024的屏幕大约需要20-60K,但是常见的方法往往不会是最好的,如果每秒24枕,会让你的网络趴下的。如何通过socket发送
答:去www.codeproject.com搜索winsock,你能找到一大堆的源代码!
以下仅作参考,我随意试验的代码,前些天写的        Dim CurImage As Image = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, Imaging.PixelFormat.Format16bppRgb555)
        Dim g As Graphics = Graphics.FromImage(CurImage)
        g.Clear(Color.White)
        g.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size)
        Dim MyStream As Stream = Nothing
        CurImage.Save(MyStream, System.Drawing.Imaging.ImageFormat.Gif)
        'CurImage.Save("D:\D\A" & II.ToString & ".Jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
        'CurImage.Save("D:\D\A" & II.ToString & ".Gif", System.Drawing.Imaging.ImageFormat.Gif)
        'CurImage.Save("D:\D\A" & II.ToString & ".Exif", System.Drawing.Imaging.ImageFormat.Exif)
        'CurImage.Save("D:\D\A" & II.ToString & ".Emf", System.Drawing.Imaging.ImageFormat.Emf)

解决方案 »

  1.   

    1秒24帧是比较标准的...你不可能每捕获一帧就往服务器发一次...一般做法都是, 降低图片质量, 保存在本地...等整个监视过程结束后再将所有图片合成, 整体压缩后才发给服务器...个人觉得发送用FTP方式比较好...
      

  2.   

    FTP,我崩溃双机互联,哪里会有FTP,假如人家跟踪你数据包,你的FTP还不被入侵了??
      

  3.   

    局域网使用, 构建局域网的服务器有什么好奇怪呢....再说,一个录影有可能会很大, 用socket方式.我觉得不是很好....
      

  4.   

    1、局域网服务器Ftp也是不安全的,随便一个抓包工具,都可以获得你Ftp服务器的绝对权限;
    2、屏幕监视不是录影,监视必须时时,而不是过后浏览。
    3、似乎你对这些不是很了解——我也不是很精通。只是对问题,不是对人。
      

  5.   

    感谢 大家的参与~
    可能忘记说了一点,我需要的实时监控,而那种FTP的方式就不会去考虑了!
    我看了个java的屏幕监控程序,他的核心过程是这样的
    while (true){
       try{
        socket = new Socket("220.173.44.158",5000);//连接远程IP
        BufferedImage image = robot.createScreenCapture(rectangle);//捕获制定屏幕矩形区域
        os = new ZipOutputStream(socket.getOutputStream());//加入压缩流
        //os = new ZipOutputStream(new FileOutputStream("C:/1.zip"));
        
        os.setLevel(9);
        os.putNextEntry(new ZipEntry("1.jpg"));//这个是干吗?怎么会有1.jpg?
        JPEGCodec.createJPEGEncoder(os).encode(image);//图像编码成JPEG
        os.close();
        Thread.sleep(50);//每秒20帧
       }catch(Exception e){
        e.printStackTrace();
    我不太明白的是他是如何用socket发送压缩流的?(MS只看到了最后编码成JPEG,而没有发送过程)C#可以么?
      

  6.   

    发送过程去www.codeproject.com搜索winsock,遍地都是