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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы