Skip to content

fanleung/BmpToArray

Repository files navigation

BmpToArray

Convert BMP images to arrays

功能及目的

  • 参考其他图片取模软件,解决每次要手动选取图片去获取数据,这样很麻烦。
  • 希望做成将图片放进一个路径,让其把该路径的所有BMP转化成数组,并合并在成一个.C文件。
  • 数组名就根据图片名称

1. 单色BMP转换原理原理

假设一个单色图片的一个像素点对应一个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

2. 16位色BMP转换原理

这里举例24bit彩色图片转化为16bit图片。 一般一个24bit彩图 的一个像素点读取出来 为3个字节,字节顺序分别为 R(8bit) G(8bit) B(8bit)

转化为16bit, 即 R(高5位) + G(高6位) + B(高5位) 拼成2个字节

3. 12位色BMP转换原理

类似16位色,但取位有点区别: R(高4位) + G(高4位) + B(高4位) 拼成1.5个字节

现在的做法是将2个像素点拼接成3个字节,如果一行中是奇数,就拼凑一个黑色点,凑成偶数。

4. 6位色BMP转换原理

类似16位色,但取位有点区别:

R(高2位) + G(高2位) + B(高2位) + 补两个位11, 凑成1个字节。

并且要求图片宽度要为4的倍数

About

Convert BMP images to arrays

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages