Как черно/белый рисунок перенести в массив char[] - C#
Формулировка задачи:
есть черно белый рисунок. каждый пиксель рисунка занимает 3 байка , а мне бы хотелось в 1 байт поместить 8 пикселей. Типа двоичный код Белый = 0, Черный = 1.
Незнаю даже в сторону каких класов смотреть =(
Решение задачи: «Как черно/белый рисунок перенести в массив char[]»
textual
Листинг программы
public FormMain() { InitializeComponent(); Bitmap image = new Bitmap("d:\\Untitled.png"); string imageInText = ImageToString(image); } private bool IsBlack(Color pixel) { return pixel.ToArgb() == Color.Black.ToArgb(); } private string ImageToString(Bitmap image) { StringBuilder sb = new StringBuilder(); for (int y = 0; y < image.Height; ++y) { bool[] bits = new bool[image.Width]; for (int x = 0; x < image.Width; ++x) { bits[x] = IsBlack(image.GetPixel(x, y)); } sb.AppendLine(new string(BitsToChars(bits))); } return sb.ToString(); } private char[] BitsToChars(bool[] bits) { int bitsInChar = sizeof(char) * 8; char[] chars = new char[bits.Length / bitsInChar]; for (int numberOfChars = 0, index = 0; index < bits.Length; ) { int charBits = 0; for (int bit = 0; (bit < bitsInChar) && (index < bits.Length); ++bit) { charBits <<= 1; charBits |= bits[index++] ? 1 : 0; } chars[numberOfChars++] = (char)charBits; } return chars; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д