1

我正在编写一个创建图像文件的程序。我希望在程序的二进制文件中硬编码“原始”图像。

我刚在想...

char image[] = {
#include"image.jpg"
}

但是我需要以某种方式将图像转换为可以#included到ac文件中作为char数组的格式?

4

3 回答 3

8

好的,使用 unix 工具xxd创建给定二进制文件的 ac char 数组导入,像这样:

$ xxd -i imgfile.dat > imgfile.h

这应该产生如下输出:

unsigned char imgfile[] = {
  0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x0a
};
unsigned int imgfile_len = 12;

另请参阅:“#include”C 程序中的文本文件作为 char[]

于 2012-02-06T23:10:58.143 回答
3

您可以编写一个小程序,将 jpg 文件作为输入并输出 C 初始化程序。然后#include 该文件。

#include <stdio.h>
int main(int argc, char **argv)
{
    int ch;
    int count = 0;
    printf("static const char array[] = {\n");
    while ((ch = getchar()) != -1) {
       printf("0x%02X, ", ch);
       ++count;
       if ((count % 16) == 0)
           printf("\n");
   }
   printf("\n};\n#define ARRAY_SIZE %d\n", count);
}

编译文件(称它为 initialzer.c 或其他东西)并执行以下操作:

./initializer <pic.jpg >jpeg.h

如果您愿意,您可以花哨并使数组名称可配置。

于 2012-02-06T21:41:44.087 回答
0
  • 以二进制读取方式打开图像文件
  • 确定文件大小
  • 分配内存来存储它
  • 使用将文件读入内存fread

将整个内容写在一个.h文件中,然后# include将该文件写在你的代码中。

于 2012-02-06T21:43:00.993 回答