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(); }
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; }