Convert BMP images to arrays
- 参考其他图片取模软件,解决每次要手动选取图片去获取数据,这样很麻烦。
- 希望做成将图片放进一个路径,让其把该路径的所有BMP转化成数组,并合并在成一个.C文件。
- 数组名就根据图片名称
假设一个单色图片的一个像素点对应一个bit,有颜色为1,无颜色为0,例如以下:
0001111000
0001111000
0001111000
0001111000
0001111000
0001111000
0001111000
0001111000
为一个 10X8 像素的BMP图片,则取出来的数据应该是
uint8_t BMP_8X10[] = {
0x1E, 0x00,
0x1E, 0x00,
0x1E, 0x00,
0x1E, 0x00,
0x1E, 0x00,
0x1E, 0x00,
0x1E, 0x00,
0x1E, 0x00,
};
注意,8个像素点为1byte,如果不满8个点,后面补0到8个点处理,如 00110011 011 => 0x33, 0x30
这里举例24bit彩色图片转化为16bit图片。 一般一个24bit彩图 的一个像素点读取出来 为3个字节,字节顺序分别为 R(8bit) G(8bit) B(8bit)
转化为16bit, 即 R(高5位) + G(高6位) + B(高5位) 拼成2个字节
类似16位色,但取位有点区别: R(高4位) + G(高4位) + B(高4位) 拼成1.5个字节
现在的做法是将2个像素点拼接成3个字节,如果一行中是奇数,就拼凑一个黑色点,凑成偶数。
类似16位色,但取位有点区别:
R(高2位) + G(高2位) + B(高2位) + 补两个位11, 凑成1个字节。
并且要求图片宽度要为4的倍数