Как черно/белый рисунок перенести в массив 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;
}
}