Menulis Imej BMP dalam C/C Tulen Tanpa Pustaka Luaran
Dalam algoritma pengiraan tertentu, mencipta output visual boleh menjadi penting untuk analisis dan pembentangan . Apabila berurusan dengan matriks boolean, menjana imej BMP monokrom boleh menjadi kaedah yang sesuai untuk menggambarkan data. Walau bagaimanapun, membina imej BMP dari awal tanpa bergantung pada pustaka luaran boleh kelihatan menakutkan.
Tugas ini melibatkan mentakrifkan pengepala imej dan menyusun data piksel dalam format tertentu. Pengepala BMP memberikan maklumat penting tentang imej, termasuk lebar, ketinggian dan kedalaman warnanya. Untuk imej monokrom, setiap piksel boleh diwakili dengan bit tunggal, menunjukkan warnanya (putih atau hitam).
Berikut ialah coretan kod terperinci yang menunjukkan cara menulis matriks boolean sebagai imej BMP monokrom menggunakan tulen 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; }
Dalam kod ini, pengepala BMP menyertakan lebar dan ketinggian imej sebagai sebahagian daripada data pengepala. Selepas menulis pengepala, kod itu berulang pada setiap baris matriks boolean dan membina bitmask untuk mewakili nilai piksel yang sepadan. Setiap bit dalam bitmask menunjukkan sama ada piksel itu putih atau hitam. Dengan menulis bitmasks ini secara berurutan, fail BMP yang dijana akan memaparkan matriks boolean sebagai imej monokrom dengan tepat.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Imej Monokrom BMP daripada Matriks Boolean dalam C/C Tulen Tanpa Pustaka Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!