我正在编写一个创建图像文件的程序。我希望“原始”图像在程序的二进制文件中进行硬编码。
我在想......
char image[] = {
#include"image.jpg"
}
但是我需要以某种方式将图像转换为可以作为char数组#include到c文件中的格式?
答案 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;
答案 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
该文件中。