#include short bfType; // ID:"BM" struct FILEHEADER{ unsigned int bfSize; //GRANDEZZA DEL FILE(BYTE) short int bfReserved1; short int bfReserved2; unsigned int bfOffBits; //TOTALE DEI INFORMAZIONI(BYTE) //DISOLITO 54BYTE COME IN NOSTRO CASO } fileHeader; struct INFOHEADER{ unsigned int biSize;//OCCUPA 4BYTE int biWidth; //LARGHEZZA int biHeight; //ALTEZZA short int biPlanes; short int biBitCount;//QUALITA' DELL'IMMAGINE 8,16,24,32 BIT unsigned int biCompression;//MODALITA' DI COMPRESSIONE unsigned int biSizeImage; // TOTALE DEI PIXEL int biXPelsPerMeter; int biYPelsPerMeter; unsigned int biClrUsed;//COLORI UTILIZZATI unsigned int biClrImportant;//COLORI IMPORTANTI } infoHeader; struct pixel { unsigned char r,g,b; } pix[1002]; int main(int argc, char *argv[]) { unsigned int j; int width,flag; char buff[16]; //FILE DI LETTURA E SCRITTURA FILE *input=fopen("prova.bmp","rb"),*output=fopen("BUFF.bmp","wb"); printf("*************************************************\n" "* Primo effetto:inserire \"1\" e premere invio *\n" "* Secondo effetto: inserire \"2\" e premere invio *\n" "*************************************************\n" "\n:"); scanf(" %d",&flag); //LETTURA DATI fread(&bfType,sizeof(short),1,input); fread(&fileHeader,sizeof(fileHeader), 1, input); fread(&infoHeader,sizeof(infoHeader), 1, input); fseek(input, fileHeader.bfOffBits , SEEK_SET); width=infoHeader.biWidth; fwrite(&bfType,sizeof(short),1,output); fwrite(&fileHeader,sizeof(fileHeader), 1, output); fwrite(&infoHeader,sizeof(infoHeader), 1, output); fseek(output, fileHeader.bfOffBits , SEEK_SET); while(!feof(input)){ fread(pix,sizeof(pix[0]) * width + 2, 1, input); for (int i=0;i