순수 C/C에서 단색 BMP 이미지 생성
비트맵 이미지 파일은 디지털 이미지 저장에 널리 사용됩니다. 이 문서에서는 해당 행렬 요소가 true인 경우 픽셀이 흰색으로 설정되는 흑백 BMP 파일에 부울 행렬을 작성해야 하는 필요성에 대해 설명합니다.
BMP 헤더 이해
BMP 파일 형식에는 이미지에 대한 필수 정보가 포함된 특정 헤더 구조가 있습니다. 헤더는 파일 헤더와 정보 헤더의 두 부분으로 구성됩니다.
파일 헤더
정보 헤더
단색 BMP 생성
단색 BMP를 생성하려면:
예제 코드
다음 C/C 코드는 부울 행렬에서 단색 BMP를 생성하는 방법을 보여줍니다.
#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; }
이 코드는 부울 행렬 행렬을 가져와 지정된 너비(w)와 높이(h)를 가진 흑백 BMP 이미지를 생성합니다. 부울 값을 픽셀 값으로 변환하고 BMP 파일을 디스크에 씁니다.
위 내용은 순수 C/C의 부울 행렬에서 흑백 BMP 이미지를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!