外部ライブラリを使用しない Pure C/C での BMP イメージの書き込み
情報出力が必要なアルゴリズムを開発する場合、出力を生成する必要があります。さまざまな形式。一般的な形式の 1 つは BMP 画像です。この記事では、真の要素が白いピクセルとして表される、ブール行列から単色の BMP イメージを作成する問題について説明します。
BMP ヘッダー構造
BMP (ビットマップ) Image) ファイルは、ヘッダー セクションとそれに続く画像データで構成されます。ヘッダーには、画像のサイズ、色深度、圧縮形式に関する重要な情報が含まれています。主なコンポーネントの内訳は次のとおりです。
コードブール行列
から BMP イメージを生成する方法 次のコード スニペットは、その方法を示しています。外部ライブラリに依存せずにブール行列から BMP イメージを作成するには:
FILE *f; unsigned char *img = NULL; int filesize = 54 + 3*w*h; // w and h are image width and height // Allocate memory for image data img = (unsigned char *)malloc(3*w*h); memset(img,0,3*w*h); // Fill img byte array with pixel data for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { int x = i, y = (h-1)-j; int r, g, b; // Color components // Set pixel color based on matrix element if (matrix[i][j]) { r = g = b = 255; // White pixel } else { r = g = b = 0; // Black pixel } // Write pixel color components to image data array img[(x+y*w)*3+2] = (unsigned char)(r); img[(x+y*w)*3+1] = (unsigned char)(g); img[(x+y*w)*3+0] = (unsigned char)(b); } } // Set BMP header values unsigned char bmpfileheader[14] = {'B','M', 0,0,0,0, 0,0, 0,0, 54,0,0,0}; unsigned char bmpinfoheader[40] = {40,0,0,0, 0,0,0,0, 0,0,0,0, 1,0, 24,0}; // Update file size bmpfileheader[ 2] = (unsigned char)(filesize ); bmpfileheader[ 3] = (unsigned char)(filesize>> 8); bmpfileheader[ 4] = (unsigned char)(filesize>>16); bmpfileheader[ 5] = (unsigned char)(filesize>>24); // Update image width and height bmpinfoheader[ 4] = (unsigned char)( w ); bmpinfoheader[ 5] = (unsigned char)( w>> 8); bmpinfoheader[ 6] = (unsigned char)( w>>16); bmpinfoheader[ 7] = (unsigned char)( w>>24); bmpinfoheader[ 8] = (unsigned char)( h ); bmpinfoheader[ 9] = (unsigned char)( h>> 8); bmpinfoheader[10] = (unsigned char)( h>>16); bmpinfoheader[11] = (unsigned char)( h>>24); // Save BMP image to file f = fopen("img.bmp","wb"); fwrite(bmpfileheader, 1, 14, f); fwrite(bmpinfoheader, 1, 40, f); for (int i = 0; i < h; i++) { fwrite(img+(w*(h-i-1)*3), 3, w, f); fwrite(bmppad, 1, (4-(w*3)%4)%4, f); // Pad to 4-byte boundary } // Free resources free(img); fclose(f);
このコードで概説されている手順に従うことで、ブール行列から単色の BMP イメージを正常に生成できます。アルゴリズムの結果を視覚化して出力します。
以上が外部ライブラリを使用せずに Pure C/C でブール行列から単色 BMP イメージを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。