画像ファイルを作成するプログラムを書いています。「元の」画像をプログラムのバイナリにハードコーディングしたい。
私が考えていた...
char image[] = {
#include"image.jpg"
}
しかし、どうにかして画像を char 配列として ac ファイルに #include できる形式に変換する必要がありますか?
画像ファイルを作成するプログラムを書いています。「元の」画像をプログラムのバイナリにハードコーディングしたい。
私が考えていた...
char image[] = {
#include"image.jpg"
}
しかし、どうにかして画像を char 配列として ac ファイルに #include できる形式に変換する必要がありますか?
わかりました、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;
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
必要に応じて、アレイ名を構成可能にすることができます。
fread
全体をファイルに記述し.h
、# include
そのファイルをコードに記述します。