ホームページ >バックエンド開発 >C++ >外部ライブラリを使用せずに Pure C/C でブール行列からモノクロ BMP イメージを作成するにはどうすればよいですか?

外部ライブラリを使用せずに Pure C/C でブール行列からモノクロ BMP イメージを作成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 20:58:11515ブラウズ

How to Create Monochrome BMP Images from Boolean Matrices in Pure C/C   Without External Libraries?

外部ライブラリを使用しない 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。