Arduino eInk Image2LCD - Размер c-массива - PullRequest
0 голосов
/ 12 сентября 2018

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

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

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,};

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

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

1 Ответ

0 голосов
/ 12 сентября 2018

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

0 1 0 0 0 0 0 1  

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

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

...