问题是我想通过UDP发送桌面截图(这是Bitmap类型)。如您所知,UDP的容量有限,为65 000字节,因此我必须“压缩”图像大小以适应此容量。我试过这个:
MemoryStream memoryStream = new MemoryStream();
Bitmap bmp = CaptureDesktopWithCursor2();
ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 15L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp.Save(memoryStream, jpgEncoder, myEncoderParameters);
Bitmap Bit;
using (memoryStream)
{
Bit = new Bitmap(memoryStream);
byte[] lol = imageToByteArray(Bit);
}
它会改变图像的大小,但只有当你将它保存为.jpg文件时才会这样。
我还能做些什么才能适应UDP容量(65 000)?当然我尝试调整图像大小(它很适合上限),但它会影响这个图像的质量。
public byte[] imageToByteArray(Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}