Arduino eInk Image2LCD — Размер c-массива

Это программное обеспечение Image2LCD (https://www.buydisplay.com/default/image2lcd) преобразует изображения в c-массивы. Я хочу написать эту базовую операцию самостоятельно, но я не понимаю, почему программа выводит массив длиной 5000 для входного изображения размером 200×200. Для 400×400 размер массива равен 20000. Кажется, он всегда равен 1/8 от количества пикселей.

Выходной массив для квадратного изображения 200×200 начинается и заканчивается следующим образом:

const unsigned char gImage_test[5000] = { /* 0X00,0X01,0XC8,0X00,0XC8,0X00, */
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X60,0X00,0X00,0X00,0X00,
0X3C,0X60,0X00,0X0C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X70,0X00,0X00,0X00,0X00,0X7E,0X70,0X00,0X0E,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X78,0X00,0X00,
0X00,0X00,0X7F,0X78,0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0XFC,0X3C,0X3E,0X3C,0X3F,0XF8,0X3C,0X7F,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,

...

,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};

(Да, на изображении много белого.)

Почему вам не нужно одно значение для каждого пикселя?

0

Решение

Съемка с бедра здесь, но если вы используете монохромный, вам нужен только один немного на пиксель (байт = 8 бит). Эти биты могут быть упакованы в байты для эффективности хранения. Скажем, первые 8 пикселей вашего изображения:

0 1 0 0 0 0 0 1

Если мы интерпретируем эти восемь битов как одно двоичное число, это 1000001, который 65 в десятичном виде — так просто хранить 65 в 8-разрядном целом числе, занимающем только один байт, будут храниться все 8 монохромных пикселей. Недостатком является то, что он не так интуитивно понятен, как каждый пиксель в виде отдельного значения в массиве.

Я могу ошибаться, но 1/8 указывает прямо на этот вид сжатия.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]