1

画像ファイルを作成するプログラムを書いています。「元の」画像をプログラムのバイナリにハードコーディングしたい。

私が考えていた...

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

しかし、どうにかして画像を char 配列として ac ファイルに #include できる形式に変換する必要がありますか?

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;

参照: C プログラムのテキスト ファイルを char[] として「#include」する

于 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 に答える