我正在尝试创建一个远程桌面式程序,我正在尝试获取远程PC上的内容的图像,并将其发送回我的客户端PC以更新其图像(这种情况发生在2- 3秒。)
我目前得到的桌面图片如下:
// Set up a bitmap of the correct size
Bitmap CapturedImage = new Bitmap((int)SystemInformation.VirtualScreen.Width,
(int)SystemInformation.VirtualScreen.Height, System.Drawing.Imaging.PixelFormat.Format16bppRgb565);
// Create a graphics object from it
System.Drawing.Size size = new System.Drawing.Size((int)SystemInformation.VirtualScreen.Width, (int)SystemInformation.VirtualScreen.Height);
using (Graphics gr = Graphics.FromImage(CapturedImage))
{
// copy the entire screen to the bitmap
gr.CopyFromScreen(0, 0, 0, 0,
size, CopyPixelOperation.SourceCopy);
}
EncodeToJPEG(CapturedImage);
EncodeToJPEG看起来像这样:
var qualityEncoder = Encoder.Quality;
var quality = (long)0;
var ratio = new EncoderParameter(qualityEncoder, quality );
var codecParams = new EncoderParameters(1);
codecParams.Param[0] = ratio;
var jpegCodecInfo = GetEncoder(ImageFormat.Jpeg);
capturedImage.Save(@"c:\Test.jpg", jpegCodecInfo, codecParams); // Save to JPG
我的问题来自Save方法。我想知道是否有办法暂时存储这个JPG足够让我通过网络发送回来,而不是将其保存到文件中?比如,我可以返回一个压缩JPG的Image对象吗?或者这是不可能的?
我也听说过,出于这些目的,将图像拆分为块,并检查其增量并仅发回更改是更快速更新图像的最有效方法。如果有人在该部门有任何指示,我将非常感激。
答案 0 :(得分:3)
Encoder具有OVERLOAD名称为Save
的方法要传递的Arugument是Stream
您将保存到MemoryStream以进行内存块保存
没有文件!!
最好,
PRASHANT:)