Закрыть ... [X]

Как конвертировать RGB-изображения в текст



Чтобы начать работу, откройте пространство имён Drawing:
используя System.Drawing;
Создайте новый экземпляр класса Bitmap:
Bitmap bmp = new Bitmap ("c: \ 1.bmp") / / c: \ 1.bmp - адрес изображения
Чтобы сохранить значение цвета пикселя, вы можете создать отдельную структуру, поля которой являются компонентами RGB, но я решил использовать класс Color из пространства имен Drawing. Чтобы получить цвет, мы используем метод GetPixel (x, y), где x, y - координаты пикселя изображения. Если вы хотите использовать свою собственную структуру для хранения цвета, а не экземпляр класса Color, то вы можете использовать метод bmp.GetPixel (x, y) .x для получения отдельного компонента RGB, где x является R, G или B.
Цвет [,] color = new Цвет [bmp.Width, bmp.Height];
for (int y = 0; y <bmp.Height; y ++)
for (int x = 0; x <bmp.Width; x ++)
{
color [x, y] = bmp.GetPixel (x, y);
}
Чтобы записать значения цвета в файл, используйте класс StreamWriter. Поскольку элементы R, G, B экземпляра Color имеют тип байта, мы преобразуем их с помощью метода ToString («X2») в тип строки, который будет хранить шестнадцатеричные значения элементов RGB.
StreamWriter steamWriter = новый StreamWriter ("c: \ 1.txt");
for (int y = 0; y <bmp.Height; y ++)
{
for (int x = 0; x <bmp.Width; x ++)
{
steamWriter.Write (цвет [x, y] .R.ToString ("X2"));
steamWriter.Write (цвет [x, y] .G.ToString («X2»));
steamWriter.Write (цвет [x, y] .B.ToString ("X2") + "");
}
steamWriter.WriteLine ();
}
steamWriter.Close ();
Теперь мы выполним обратную операцию - мы преобразуем полученный текстовый файл в изображение.
Используя StreamReader, мы читаем информацию из файла.
StreamReader txtFile = новый StreamReader ("c: \ 1.txt");
Вычислите ширину и высоту изображения. Поскольку каждый пиксель занимает 6 символов и 1 проход, но в конце нет прохода, мы используем следующую формулу для расчета ширины:
temp = txtFile.ReadLine ();
width = (temp.Length + 1) / 7;
Высота изображения - это количество строк в файле:
while (! txtFile.EndOfStream)
{
txtFile.ReadLine ();
высота ++;
}
высота ++;
Переместите указатель чтения в файл в начало:
txtFile.DiscardBufferedData ();
Создайте новый экземпляр класса Bitmap:
Bitmap bmp2 = новый битмап (ширина, высота);
Используя метод split, мы выделяем элементы матрицы. Мы объявляем три переменные типа byte - R, G, B. Используя методы Parse и Substring, мы отдельно разделяем цветовые элементы.
Чтобы заполнить пиксель в изображении с этим цветом, используйте метод SetPixel (j, i, Color.FromArgb (R, G, B)), где j, i - координаты изображения, Color.FromArgb (R, G, B ) - это метод, который создает структуру Color.
для (int i = 0; i <height; i + +)
{
temp = txtFile2.ReadLine ();
string [] substring = temp.Split ('');
for (int j = 0; j <width; j + +)
{
R = byte.Parse (подстрока [j]. Подстрока (0, 2),
System.Globalization.NumberStyles.HexNumber)
G = byte.Parse (подстрока [j]. Подстрока (2, 2),
System.Globalization.NumberStyles.HexNumber)
B = byte.Parse (подстрока [j]. Подстрока (4, 2),
System.Globalization.NumberStyles.HexNumber)
bmp2.SetPixel (j, i, Color.FromArgb (R, G, B));
}
}
Теперь вы можете сохранять изображения. Если вы работаете в WindowsForm, вы можете использовать класс SaveFileDialog:
SaveFileDialog saveImage = new SaveFileDialog ();
saveImage.Filter = "bmp files (*. bmp) | *. bmp | Все файлы (*. *)
| * .











ШОКИРУЮЩИЕ НОВОСТИ



Похожие статьи


Очень душевные конфеты
Как открыть транзитный счёт
Хорошая мебель в нашем доме
Как оформлять бухгалтерские документы в 2018 году
Каково состояние сельского хозяйства в регионах России
Как привлекать пользователей
Как использовать керлинг железа