如何生成C++;包含位图文件目录中的RLE压缩数据的文件? 我在嵌入式环境中工作,使用C++和IAR嵌入式Workbench IDE。该界面是一个触摸屏,该屏幕的所有图形都是特定目录中的位图文件。不知何故,这些位图文件被放入一个巨大的.cpp文件中。大约有200个位图文件(相对较小),包含所有内容的.cpp文件有122000行

如何生成C++;包含位图文件目录中的RLE压缩数据的文件? 我在嵌入式环境中工作,使用C++和IAR嵌入式Workbench IDE。该界面是一个触摸屏,该屏幕的所有图形都是特定目录中的位图文件。不知何故,这些位图文件被放入一个巨大的.cpp文件中。大约有200个位图文件(相对较小),包含所有内容的.cpp文件有122000行,c++,bitmap,embedded,compression,bmp,C++,Bitmap,Embedded,Compression,Bmp,此文件中的所有信息都经过RLE8压缩。我无法想象这个文件不是自动生成的。我的问题是怎么做?我真的要写我自己的程序来做这件事吗?因为这是最初的程序员必须做的事情?我希望不必重新发明轮子 下面是一个小9x23图像的示例 static GUI_CONST_STORAGE unsigned char acNumberBitDiameterWhiteOnGreyPeriod[] = { /* RLE: 164 Pixels @ 000,000*/ 164, 0x38, /* RLE: 001 Pi

此文件中的所有信息都经过RLE8压缩。我无法想象这个文件不是自动生成的。我的问题是怎么做?我真的要写我自己的程序来做这件事吗?因为这是最初的程序员必须做的事情?我希望不必重新发明轮子

下面是一个小9x23图像的示例

static GUI_CONST_STORAGE unsigned char acNumberBitDiameterWhiteOnGreyPeriod[] = {
  /* RLE: 164 Pixels @ 000,000*/ 164, 0x38,
  /* RLE: 001 Pixels @ 002,018*/ 1, 0x68,
  /* RLE: 003 Pixels @ 003,018*/ 3, 0xA0,
  /* RLE: 001 Pixels @ 006,018*/ 1, 0x60,
  /* RLE: 004 Pixels @ 007,018*/ 4, 0x38,
  /* RLE: 001 Pixels @ 002,019*/ 1, 0xA0,
  /* RLE: 003 Pixels @ 003,019*/ 3, 0xF8,
  /* RLE: 001 Pixels @ 006,019*/ 1, 0x80,
  /* RLE: 004 Pixels @ 007,019*/ 4, 0x38,
  /* RLE: 001 Pixels @ 002,020*/ 1, 0xA0,
  /* RLE: 003 Pixels @ 003,020*/ 3, 0xF8,
  /* RLE: 001 Pixels @ 006,020*/ 1, 0x80,
  /* RLE: 004 Pixels @ 007,020*/ 4, 0x38,
  /* RLE: 001 Pixels @ 002,021*/ 1, 0xA0,
  /* RLE: 003 Pixels @ 003,021*/ 3, 0xF8,
  /* RLE: 001 Pixels @ 006,021*/ 1, 0x80,
  /* RLE: 004 Pixels @ 007,021*/ 4, 0x38,
  /* RLE: 001 Pixels @ 002,022*/ 1, 0x68,
  /* RLE: 003 Pixels @ 003,022*/ 3, 0xA0,
  /* RLE: 001 Pixels @ 006,022*/ 1, 0x60,
  /* RLE: 002 Pixels @ 007,022*/ 2, 0x38,


  0};  /* 42 bytes for 207 pixels */

const GUI_BITMAP CBMP::m_bmNumberBitDiameterWhiteOnGreyPeriod = {
  9, /* XSize */
  23, /* YSize */
  9, /* BytesPerLine */
  GUI_COMPRESS_RLE8, /* BitsPerPixel */
  acNumberBitDiameterWhiteOnGreyPeriod,   /* Pointer to picture data (indices) */
  (const GUI_LOGPALETTE*)NULL,   /* Pointer to palette */
  GUI_DRAW_RLE_GRAY8
};

非灰度图像还包括调色板。对于如何生成此文件的任何建议,我都将不胜感激。

事实证明,我们使用的承包商确实编写了一个程序,将所有位图文件压缩到这个.cpp文件中,因此我将不得不获得该程序,或者使用我自己的程序。谢谢。欢迎来到嵌入式编程的世界。我编程工作的一半是主机端工具,它可以将内容从一种格式转换为另一种格式。当你说“此文件中的所有信息都是RLE8压缩的。”你是指C文件还是原始图像文件?有很多程序可以将任意二进制数据文件转换为C数组源代码,例如-Google“binary-to-C”。如果源数据还不是RLE,请获取或编写一个工具,以您的特定格式进行编码,并分两步进行转换。编写代码实现这两种功能并不难。