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; }
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!