외부 라이브러리 없이 순수 C/C에 BMP 이미지 작성
정보 출력이 필요한 알고리즘을 개발할 때 다양한 형식. 일반적인 형식 중 하나는 BMP 이미지입니다. 이 기사에서는 실제 요소가 흰색 픽셀로 표시되는 부울 행렬에서 단색 BMP 이미지를 생성하는 문제를 다룹니다.
BMP 헤더 구조
BMP(비트맵 Image) 파일은 헤더 섹션과 이미지 데이터로 구성됩니다. 헤더에는 이미지의 크기, 색상 심도 및 압축 형식에 대한 중요한 정보가 포함되어 있습니다. 주요 구성 요소에 대한 분석은 다음과 같습니다.
코드 부울 행렬에서 BMP 이미지를 생성하려면
다음 코드 조각은 외부 라이브러리에 의존하지 않고 부울 행렬의 BMP 이미지:
FILE *f; unsigned char *img = NULL; int filesize = 54 + 3*w*h; // w and h are image width and height // Allocate memory for image data img = (unsigned char *)malloc(3*w*h); memset(img,0,3*w*h); // Fill img byte array with pixel data for (int i = 0; i < w; i++) { for (int j = 0; j < h; j++) { int x = i, y = (h-1)-j; int r, g, b; // Color components // Set pixel color based on matrix element if (matrix[i][j]) { r = g = b = 255; // White pixel } else { r = g = b = 0; // Black pixel } // Write pixel color components to image data array 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); } } // Set BMP header values 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}; // Update file size bmpfileheader[ 2] = (unsigned char)(filesize ); bmpfileheader[ 3] = (unsigned char)(filesize>> 8); bmpfileheader[ 4] = (unsigned char)(filesize>>16); bmpfileheader[ 5] = (unsigned char)(filesize>>24); // Update image width and height 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); // Save BMP image to file 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); // Pad to 4-byte boundary } // Free resources free(img); fclose(f);
이 코드에 설명된 단계를 따르면 부울 행렬에서 단색 BMP 이미지를 성공적으로 생성할 수 있으며 시각화 및 출력 방법을 제공합니다. 알고리즘 결과.
위 내용은 외부 라이브러리 없이 순수 C/C의 부울 행렬에서 단색 BMP 이미지를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!