繁体   English   中英

c#降低了图像质量

[英]c# reduced image quality

我正在编写一个类似于TeamViewer的程序。 但我有一个问题,屏幕分辨率太大。 下面是我如何从屏幕生成图像。

byte[] ScreenShut()
{
    Bitmap bmp = new  Bitmap(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height);

    Graphics gr = Graphics.FromImage(bmp);
    bmp.SetResolution(96.0F,96.0F);
    gr.CopyFromScreen(0, 0, 0, 0, new Size(bmp.Width, bmp.Height));
    MemoryStream ms = new MemoryStream();
    bmp.Save(ms, ImageFormat.Png);
    return ms.GetBuffer();
}

如何降低传入图片的质量?

使用此保存为jpg 8位

public Bitmap(
    int width,
    int height,
    PixelFormat format
)

我正在编写一个类似于TeamViewer的程序

我假设你指的是RDP /桌面共享方面。

您的问题是您没有考虑任何先前的帧,因此传输的错误数据很多。 一般来说,不是很多屏幕都会随时变化。 您需要将先前帧与当前帧进行比较以确定已更改的内容并仅发送增量。 因此,您的问题基本上是如何以合理快速的方式传输运动图像连续帧

任何流视频解决方案都可以解决这个问题。 也许是H.264?

您会发现视频编解码器不仅适用于当前帧,还适用于之前的帧。 因此,您可以将屏幕视为在更大的矩形棱镜的时间内移动的切片。 所以简单地以2D方式解决它,比如试图减少比特深度; 空间分辨率是不够的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM