外部ライブラリを使用しない Pure C/C での BMP イメージの書き込み
特定の計算アルゴリズムでは、視覚的な出力の作成が分析とプレゼンテーションに不可欠な場合があります。ブール行列を扱う場合、モノクロ BMP イメージの生成はデータを視覚化するのに適した方法となります。ただし、外部ライブラリに依存せずに BMP 画像を最初から構築するのは、困難に思えるかもしれません。
このタスクには、画像ヘッダーの定義と特定の形式でのピクセル データの編成が含まれます。 BMP ヘッダーは、幅、高さ、色深度など、画像に関する重要な情報を提供します。モノクロ画像の場合、各ピクセルはその色 (白または黒) を示す単一ビットで表すことができます。
ここに、純粋な BMP イメージを使用してブール行列をモノクロ BMP 画像として書き込む方法を示す詳細なコード スニペットを示します。 C/C :
#include <stdio.h> #include <stdlib.h> int main(int argc, char* argv[]) { // Image dimensions int width = 100, height = 100; // Boolean matrix representing the image data bool matrix[width][height]; // File pointer for writing the BMP image FILE* f = fopen("image.bmp", "wb"); // BMP file header unsigned char bmpfileheader[14] = {'B','M', 0,0,0,0, 0,0, 0,0, 54,0,0,0}; // BMP image data header unsigned char bmpinfoheader[40] = {40,0,0,0, 0,0,0,0, 0,0,0,0, 1,0, 1,0}; // Set file size in header bmpfileheader[ 2] = (width + 7) / 8 * height; // Adjust image width and height in header bmpinfoheader[ 4] = width; bmpinfoheader[ 8] = height; // Write the BMP header and image data fwrite(bmpfileheader, 1, 14, f); fwrite(bmpinfoheader, 1, 40, f); // Iterate over the matrix and write each row as a bitmask for (int i = 0; i < height; i++) { // Create a bitmask for the current row unsigned char rowdata = 0; for (int j = 0; j < width; j++) { if (matrix[j][i]) { // Set the corresponding bit in the bitmask rowdata |= 1 << (7 - j); } } fwrite(&rowdata, 1, 1, f); } fclose(f); return 0; }
このコードでは、BMP ヘッダーにはヘッダー データの一部として画像の幅と高さが含まれています。ヘッダーを書き込んだ後、コードはブール行列の各行を反復処理し、対応するピクセル値を表すビットマスクを構築します。ビットマスクの各ビットは、ピクセルが白か黒かを示します。これらのビットマスクを連続して書き込むことにより、生成された BMP ファイルはブール行列をモノクロ画像として正確に表示します。
以上が外部ライブラリを使用せずに Pure C/C でブール行列からモノクロ BMP イメージを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。