#include ansi C中的图像

时间:2012-02-06 21:39:22

标签: c c-preprocessor image-file

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

我在想......

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

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

3 个答案:

答案 0 :(得分:7)

好的,使用unix工具xxd创建给定二进制文件的c 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" a text file in a C program as a char[]

答案 1 :(得分: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

如果你愿意的话,你可以想象并且可以配置数组名称。

答案 2 :(得分:0)

  • 二进制读取模式
  • 打开图像文件
  • 确定文件的大小
  • 分配内存以存储
  • 使用fread
  • 将文件读入内存

将整个内容写入代码中的.h文件和# include该文件中。