/* Nome: Mario Cognome: Montanari Classe: 3AIN Data: 02/05/2025 Metodo 1 per la generazione di un immagine .bmp (copio un'immagine giĆ  esistente e la modifico come voglio). */ #include using namespace std; #pragma pack(1) typedef struct { char bfType[2]; int bfSize; int bfReserved; int bfOffBits; } BITMAPFILEHEADER; typedef struct { unsigned char b; unsigned char g; unsigned char r; } BGR; int main(void) { cout << "Size of BITMAPFILEHEADER: " << sizeof(BITMAPFILEHEADER) << endl; FILE * file = fopen("immagine_generata.bmp", "r+b"); if (file != NULL) { int bfOffBits; BITMAPFILEHEADER bf; fread(&bf, sizeof(bf), 1, file); cout << "bfType: " << bf.bfType[0] << bf.bfType[1] << endl; cout << "bfSize: " << bf.bfSize << endl; cout << "bfReserved: " << bf.bfReserved << endl; cout << "bfOffBits: " << bf.bfOffBits << endl; fseek(file, bf.bfOffBits, SEEK_SET); BGR bgr[20 * 20]; /* METODO 1 PER LA VERIFICA DELLA LETTURA DEL PIXEL if(fread(&bgr, sizeof(BGR), 20 * 20, file) < 400) { cout << "Errore di scrittura." << endl; } */ // METODO 2 PER LA VERIFICA DELLA LETTURA DEL PIXEL if(fread(&bgr, sizeof(bgr), 1, file) < 1) { cout << "Errore di scrittura." << endl; } for (int i = 0; i < 20 * 20; i++) { bgr[i].b = 0; bgr[i].g = 255; bgr[i].r = 0; } fseek(file, bf.bfOffBits, SEEK_SET); /* METODO 1 PER LA VERIFICA DELLA SCRITTURA DEL PIXEL if(fwrite(&bgr, sizeof(BGR), 20 * 20, file) < 400) { cout << "Errore di scrittura." << endl; } */ // METODO 1 PER LA VERIFICA DELLA SCRITTURA DEL PIXEL if(fwrite(&bgr, sizeof(bgr), 1, file) < 1) { cout << "Errore di scrittura." << endl; } fclose(file); } else { perror("Error (source)"); } return 0; }