> 백엔드 개발 > C++ > 외부 라이브러리 없이 순수 C/C의 부울 행렬에서 흑백 BMP 이미지를 만드는 방법은 무엇입니까?

외부 라이브러리 없이 순수 C/C의 부울 행렬에서 흑백 BMP 이미지를 만드는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-03 20:58:11
원래의
578명이 탐색했습니다.

How to Create Monochrome BMP Images from Boolean Matrices in Pure C/C   Without External Libraries?

외부 라이브러리 없이 순수 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿