Bir byte dizisinden nasıl Bitmap image elde edebilirim?

Merhaba,görüntü işleme gri filtreleme yaptım.Bunun için önce görüntüyü line line aldım.AddRange ile tüm byteları elde ettim.Daha sonra bu datayı bir byte dizisine çevirdim(checkBoks1 de).Bu byte dizisini nasıl bir bitmap image e dönüştürebilirim?

using AForge.Video.DirectShow;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace dnm2510img
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        public FilterInfoCollection devices;
        public VideoCaptureDevice camera;

        private void Form1_Load(object sender, EventArgs e)
        {
            devices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            foreach (FilterInfo item in devices)
            {
                comboBox1.Items.Add(item.Name);
            }

            camera = new VideoCaptureDevice();
            comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (camera.IsRunning == false)
                {
                    camera = new VideoCaptureDevice(devices[comboBox1.SelectedIndex].MonikerString);
                    camera.NewFrame += Camera_NewFrame;
                    camera.Start();
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message + "");
            }
        }
        List<byte> alldata = new List<byte>();
        public void Camera_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
        {
            Bitmap image = (Bitmap)eventArgs.Frame.Clone();
            byte[] maindata = new byte[image.Width*3];
            int count = 0;

            if(btnapplyWasClicked == true)
            {
                for (int i = 0; i < image.Height; i++)
                {
                    for (int j = 0; j < image.Width; j++)
                    {
                        Color color = image.GetPixel(j, i);
                        maindata[count] = color.R;
                        maindata[count + 1] = color.G;
                        maindata[count + 2] = color.B;
                    }

                    byte[] processGray = Gray.GrayFilter(maindata,image.Width);
                    alldata.AddRange(processGray);
                }       
            }
        }

        private bool btnapplyWasClicked = false;

        private void btnapply_Click(object sender, EventArgs e)
        {
            btnapplyWasClicked = true;
        }
    }
}

Böyle bir kod denedim ama çalışmıyor.

 private void btnapply_Click(object sender, EventArgs e)
        {
            btnapplyWasClicked = true; 
        }
 public static Bitmap ByteToImage(byte[] blob)
        {
            MemoryStream mStream = new MemoryStream();
            byte[] pData = blob;
            mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
            Bitmap bm = new Bitmap(mStream, false);
            mStream.Dispose();
            return bm;
            
        }
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            byte[] a = alldata.ToArray();
            Bitmap b = ByteToImage(a);
            picfilter.Image = b;
        }
```

ImageConverter veya ConvertFrom'un o isi yaptigindan emin misin? Aciklamalari alakasiz gibi geldi.

Su constructor’i kullanman lazim.

Teşekkürler cevabın için.Emin değilim.Başka bir yöntem denedim memorystream ile o da işe yaramadı ya da ben yapamadım o versiyonunu da atarım.Senin attığın yapıda width ve height var çözümü bana kod üzerinde gösterebilir misin?Çünkü benim tüm verilerim tek bir dizide.Nasıl adapte edebileceğimi bilmiyorum.@ aib