Mencipta Imej BMP Monokromatik dalam C/C Tulen
Fail imej peta bit digunakan secara meluas untuk menyimpan imej digital. Artikel ini menangani keperluan untuk menulis matriks boolean ke dalam fail BMP monokrom, dengan piksel ditetapkan kepada putih jika elemen matriks yang sepadan adalah benar.
Memahami Pengepala BMP
Format fail BMP mempunyai struktur pengepala khusus yang mengandungi maklumat penting tentang imej. Pengepala terdiri daripada dua bahagian: pengepala fail dan pengepala maklumat.
Pengepala Fail
Pengepala Maklumat
Mencipta BMP Monokrom
Untuk mencipta BMP monokrom:
Contoh Kod
Yang berikut Kod C/C menunjukkan penciptaan BMP monokrom daripada matriks boolean:
#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; }
Kod ini mengambil matriks matriks boolean dan mencipta imej BMP monokrom dengan lebar (w) dan ketinggian (h) yang ditentukan. Ia menukar nilai boolean kepada nilai piksel dan menulis fail BMP ke cakera.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Imej BMP Monokrom daripada Matriks Boolean dalam C/C Tulen?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!