public void WriteRGBToImage(string path, RGB[,] matrix)
 {
     var width = matrix.GetLength(0);
     var height = matrix.GetLength(1);
     using (var image = new Bitmap(width, height, PixelFormat.Format24bppRgb))
     {
         var data = image.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly,
                                   PixelFormat.Format24bppRgb);
         unsafe
         {
             var pointer = (byte*)data.Scan0;
             for (int i = 0; i < width; i++)
             {
                 for (int j = 0; j < height; j++)
                 {
                     pointer[0] = (byte)matrix[i, j].R;
                     pointer[1] = (byte)matrix[i, j].G;
                     pointer[2] = (byte)matrix[i, j].B;
                     pointer += 3;
                 }
             }
         }
         image.UnlockBits(data);
         image.Save(path);
     }
 }
 public static void PrintMatrix(string name, RGB [,] matrix)
 {
     Console.WriteLine(name);
     for (int i = 0; i < matrix.GetLength(0); i++)
     {
         for (int j = 0; j < matrix.GetLength(1); j++)
         {
             Console.Write((matrix[i, j].B).ToString().PadLeft(10, ' '));
         }
         Console.WriteLine();
     }
     Console.WriteLine();
 }
Esempio n. 3
0
        public static YCrCb[,] Parse(RGB[,] rgb)
        {
            int m = rgb.GetLength(0);
            int n = rgb.GetLength(1);
            var matrix = new YCrCb[m, n];

            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    matrix[i, j] = Parse(rgb[i, j]);
                }
            }
            return matrix;
        }