C#-如何使用Jpeg压缩图像并发送到服务器

本文关键字:并发 服务器 图像 压缩 何使用 Jpeg C#- | 更新日期: 2023-09-27 18:02:15


我想用C#构建一个屏幕共享程序。(带TCP(
我在网上浏览了一下,发现最有效的方法是从客户端向服务器发送大量屏幕截图
重点是-我如何将位图压缩到Jpeg-在服务器上接收它并再次解压缩到位图(这样我就可以以表单形式显示它(
我尝试过使用JpegBitmapEncoder,但没有成功,下面是我的代码:

        Bitmap screen = TakeScreenshot();
        MemoryStream ms = new MemoryStream();
        byte[] Bytes = BmpToBytes_Unsafe(screen);
        ms.Write(Bytes, 0, Bytes.Length);
        Jpeg = new JpegBitmapEncoder();
        Jpeg.Frames.Add(BitmapFrame.Create(ms));
        Jpeg.QualityLevel = 40;
        Jpeg.Save(ms);
        BinaryReader br = new BinaryReader(ms);
        SendMessage(br.ReadBytes((int)ms.Length));

它在Jpeg.Frames.Add(BitmapFrame.Create(ms));
处抛出NotSupportedExceptionNo imaging component suitable to complete this operation was found.
所以我需要一种方法将位图转换为Jpeg,然后转换为byte[],然后通过TCP发送
在另一端,做完全相反的事情。有什么建议吗
非常感谢。

C#-如何使用Jpeg压缩图像并发送到服务器

JPEG是为照片而设计的,而不是为屏幕捕获而设计的。此外,大部分屏幕都没有变化,所以最好只发送更改后的部分,当大部分屏幕发生变化时,只发送全屏。

除非你这么做只是为了好玩,否则你做这一切都错了。VNC已经做了很多年了,源代码是免费的,所以你可以看看是如何做到的。