Heim > Backend-Entwicklung > C++ > Wie erstelle ich monochrome BMP-Bilder aus Booleschen Matrizen in reinem C/C ohne externe Bibliotheken?

Wie erstelle ich monochrome BMP-Bilder aus Booleschen Matrizen in reinem C/C ohne externe Bibliotheken?

Linda Hamilton
Freigeben: 2024-12-03 20:58:11
Original
519 Leute haben es durchsucht

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

BMP-Bilder in reinem C/C ohne externe Bibliotheken schreiben

Bei bestimmten Rechenalgorithmen kann die Erstellung visueller Ausgaben für die Analyse und Präsentation von entscheidender Bedeutung sein . Beim Umgang mit booleschen Matrizen kann die Generierung monochromer BMP-Bilder eine geeignete Methode zur Visualisierung der Daten sein. Allerdings kann es entmutigend wirken, ein BMP-Bild von Grund auf zu erstellen, ohne auf externe Bibliotheken angewiesen zu sein.

Diese Aufgabe umfasst die Definition des Bildkopfes und die Organisation der Pixeldaten in einem bestimmten Format. Der BMP-Header liefert wichtige Informationen über das Bild, einschließlich seiner Breite, Höhe und Farbtiefe. Bei einem monochromen Bild kann jedes Pixel durch ein einzelnes Bit dargestellt werden, das seine Farbe (weiß oder schwarz) angibt.

Hier ist ein detaillierter Codeausschnitt, der zeigt, wie man mit pure eine boolesche Matrix als monochromes BMP-Bild schreibt 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;
}
Nach dem Login kopieren

In diesem Code enthält der BMP-Header die Bildbreite und -höhe als Teil der Header-Daten. Nach dem Schreiben des Headers durchläuft der Code jede Zeile der booleschen Matrix und erstellt eine Bitmaske zur Darstellung der entsprechenden Pixelwerte. Jedes Bit in der Bitmaske gibt an, ob das Pixel weiß oder schwarz ist. Durch das sequentielle Schreiben dieser Bitmasken zeigt die generierte BMP-Datei die boolesche Matrix genau als monochromes Bild an.

Das obige ist der detaillierte Inhalt vonWie erstelle ich monochrome BMP-Bilder aus Booleschen Matrizen in reinem C/C ohne externe Bibliotheken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage