외부 라이브러리 없이 순수 C/C에 BMP 이미지 작성
특정 계산 알고리즘에서는 시각적 출력 생성이 분석 및 프리젠테이션에 필수적일 수 있습니다. . 부울 행렬을 처리할 때 흑백 BMP 이미지를 생성하는 것은 데이터를 시각화하는 데 적합한 방법이 될 수 있습니다. 그러나 외부 라이브러리에 의존하지 않고 처음부터 BMP 이미지를 구성하는 것은 어려울 수 있습니다.
이 작업에는 이미지 헤더를 정의하고 픽셀 데이터를 특정 형식으로 구성하는 작업이 포함됩니다. BMP 헤더는 너비, 높이, 색상 깊이 등 이미지에 대한 중요한 정보를 제공합니다. 흑백 이미지의 경우 각 픽셀은 색상(흰색 또는 검정색)을 나타내는 단일 비트로 표시될 수 있습니다.
다음은 순수 행렬을 사용하여 부울 행렬을 흑백 BMP 이미지로 작성하는 방법을 보여주는 자세한 코드 조각입니다. 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; }
이 코드에서 BMP 헤더에는 헤더 데이터의 일부로 이미지 너비와 높이가 포함됩니다. 헤더를 작성한 후 코드는 부울 행렬의 각 행을 반복하고 비트마스크를 구성하여 해당 픽셀 값을 나타냅니다. 비트마스크의 각 비트는 픽셀이 흰색인지 검은색인지를 나타냅니다. 이러한 비트마스크를 순차적으로 작성하면 생성된 BMP 파일이 부울 행렬을 흑백 이미지로 정확하게 표시합니다.
위 내용은 외부 라이브러리 없이 순수 C/C의 부울 행렬에서 흑백 BMP 이미지를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!