/// <summary> /// Функция преобразует матрицу интенсивностей синей составляющей изображения и возвращает список объектов класса ColorInPalette /// </summary> private static List <ColorInPalette> GetColorTable(int[,] clrArr) { var plt = new List <ColorInPalette>(); var valTab = new List <int>(); int p = 0; ColorInPalette cip; for (int i = 0; i < clrArr.GetLength(0) && p < 256; i++) { for (int j = 0; j < clrArr.GetLength(1) && p < 256; j++) { if (!valTab.Contains(clrArr[i, j])) { valTab.Add(clrArr[i, j]); p++; } } } for (int i = 0; i < valTab.Count; i++) { cip = new ColorInPalette(valTab[i], i); plt.Add(cip); } return(plt); }
// Для сортировки палитры написана функция SortPalette(). Функция преобразует список List<ColorInPalette>, полученный на шаге 6, и использует встроенный метод структуры List, позволяющий // сортировать список по одному из полей. // Затем она переписывает значения интенсивностей и индексов в двумерный массив. private static int[,] SortPalette(List <ColorInPalette> palette) { int[,] sortPlt = new int[palette.Count, 2]; palette.Sort(); for (int i = 0; i < palette.Count; i++) { ColorInPalette c = palette[i]; sortPlt[i, 0] = c.Index; sortPlt[i, 1] = c.Value; } return(sortPlt); }