Erstellen eines monochromatischen BMP-Bildes in reinem C/C
Bitmap-Bilddateien werden häufig zum Speichern digitaler Bilder verwendet. In diesem Artikel geht es um die Notwendigkeit, eine boolesche Matrix in eine monochrome BMP-Datei zu schreiben, wobei Pixel auf Weiß gesetzt werden, wenn das entsprechende Matrixelement wahr ist.
Den BMP-Header verstehen
Das BMP-Dateiformat hat eine spezifische Header-Struktur, die wesentliche Informationen über das Bild enthält. Der Header besteht aus zwei Teilen: dem Dateiheader und dem Informationsheader.
Der Dateiheader
Der Informationsheader
Erstellen des monochromen BMP
So erstellen Sie das monochrome BMP:
Beispielcode
Der folgende C/C-Code demonstriert die Erstellung eines monochromen BMP aus einem booleschen Wert Matrix:
#include <stdio.h> #include <stdlib.h> int main() { FILE *f; unsigned char *img = NULL; int filesize = 54 + 3*w*h; //w is your image width, h is image height, both int img = (unsigned char *)malloc(3*w*h); memset(img,0,3*w*h); for(int i=0; i<w; i++) { for(int j=0; j<h; j++) { bool = matrix[i][j] x=i; y=(h-1)-j; r = bool? 255 : 0; g = bool? 255 : 0; b = bool? 255 : 0; 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); } } 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}; unsigned char bmppad[3] = {0,0,0}; bmpfileheader[ 2] = (unsigned char)(filesize ); bmpfileheader[ 3] = (unsigned char)(filesize>> 8); bmpfileheader[ 4] = (unsigned char)(filesize>>16); bmpfileheader[ 5] = (unsigned char)(filesize>>24); 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); 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); } free(img); fclose(f); return 0; }
Dieser Code verwendet eine boolesche Matrix und erstellt ein monochromes BMP-Bild mit einer angegebenen Breite (B) und Höhe (H). Es wandelt die booleschen Werte in Pixelwerte um und schreibt die BMP-Datei auf die Festplatte.
Das obige ist der detaillierte Inhalt vonWie erstelle ich ein monochromes BMP-Bild aus einer Booleschen Matrix in Pure C/C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!