Arduino eInk Image2LCD - c 数组的大小

Arduino eInk Image2LCD - Size of c-array

此 Image2LCD 软件 (https://www.buydisplay.com/default/image2lcd) 将图像转换为 c 数组。我想自己写这个基本操作,但是我不明白为什么软件输出一个200x200大小的输入图像长度为5000的数组。对于 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,};

(是的,图像中有很多白色。)

为什么每个像素不需要一个值?

在这里从臀部拍摄,但如果您使用单色,则每个像素只需要一个 (字节 = 8 位)。这些位可以打包成字节以提高存储效率。假设您图片的前 8 个像素是:

0 1 0 0 0 0 0 1  

如果我们将这八位解释为一个二进制数,则为 1000001,即十进制的 65 - 因此只需将 65 存储为一个 8 位整数,取最多只有一个字节,将存储所有 8 个单色像素。缺点是它不像将每个像素作为数组中的单独值那样直观。

我可能错了,但 1/8 直接指向这种压缩。