Как преобразовать byte [] в растровое изображение - PullRequest
0 голосов
/ 21 июня 2020

Я хочу поделиться растровым изображением между сервером и клиентом. Я много пробовал, но у меня были проблемы с отсутствием нижней части изображения.

  1. Первый способ:

             Bitmap bmp = new Bitmap(800, 450);
    
             using (var ms = new MemoryStream(readBuffer))
             {
                 bmp = new Bitmap(ms);
             }
    
  2. Второй способ:

             using (var ms = new MemoryStream(readBuffer))
             {
                 bmp = new Bitmap(ms);
                 //bmp = Image.FromStream(ms) as Bitmap;
             }
    
  3. Таким образом, изображение не было преобразовано должным образом.

             Bitmap bmp = new Bitmap(800, 450, PixelFormat.Format24bppRgb);
    
             BitmapData bmpData = bmp.LockBits(
                                  new Rectangle(0, 0, bmp.Width, bmp.Height),
                                  ImageLockMode.WriteOnly, bmp.PixelFormat);
    
             Marshal.Copy(readBuffer, 0, bmpData.Scan0, readBuffer.Length);
    
             bmp.UnlockBits(bmpData);
    

Как Могу ли я правильно преобразовать в растровое изображение, где нижняя часть не исчезла? Это код, который я использовал для преобразования растрового изображения в байт.

        Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
        panel1.DrawToBitmap(bmp, new Rectangle(0, 0, panel1.Width, panel1.Height));

        using (var stream = new MemoryStream())
        {
            bmp.Save(stream, ImageFormat.Png);
            sendBuffer = stream.ToArray();
        }
        Array.Resize(ref sendBuffer, 1024*4);
...