如何将图像大小压缩到字节数组而不影响质量

时间:2015-12-18 19:24:12

标签: c# arrays image compression byte

问题是我想通过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();
    }

0 个答案:

没有答案