public MemImage(Image img)
            : this(img.Width, img.Height)
        {
            using (UnsafeBitmap bmp = new UnsafeBitmap(img))
            {
                bmp.LockBitmap();

                Parallel.For(0, Height, j =>
                {
                    //for (int j = 0; j < Height; j++)
                    //{

                    for (int i = 0; i < Width; i++)
                    {
                        PixelData pixelInput = bmp.GetPixel(i, j);
                        array[i][j] = pixelInput;
                    }
                    //}
                });
                bmp.UnlockBitmap();
            }
        }
        public Image ToImage()
        {
            Bitmap bmp = new Bitmap(Width, Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            int iWidth = Width;
            int iHeight = Height;
            UnsafeBitmap output = new UnsafeBitmap(iWidth, iHeight);
            output.LockBitmap();

            for (int j = 0; j < iHeight; j++)
            //   Parallel.For(0, iHeight, j =>
            {

                for (int i = 0; i < iWidth; i++)
                {
                    PixelData pixelInput = array[i][j];
                    output.SetPixel(i, j, pixelInput);
                }
                //});
            }

            output.UnlockBitmap();
            return output.Bitmap;

            //for (int j = 0; j < Height; j++)
            //{
            //    for (int i = 0; i < Width; i++)
            //    {
            //        bmp.SetPixel(i, j, array[i, j].ToColor());
            //    }
            //}
            //return bmp;
        }