//*************************************// //******** created by mamo139 *********// //*** http://mamo139.altervista.org ***// //*************************************// #include #include unsigned char* dammibit(unsigned char numero); unsigned char dammichar(unsigned char *bits); int main (void){ char nomefileb[20]; printf("nome del file base:"); scanf("%s",nomefileb); printf("%s!\n",nomefileb); FILE * pFile; long lSize; pFile = fopen ( nomefileb , "rb" ); fseek (pFile , 0 , SEEK_END); lSize = ftell (pFile); fclose (pFile); long lbuffer = lSize; //byte letti alla volta nella base printf("buffer impostato a %d bytes\n",lbuffer); unsigned char *buf; //buffer di lettura buf = new unsigned char [(lbuffer)+100]; //grandezza del buffer della base unsigned char *nbuf; //buffer di lettura nbuf = new unsigned char [(lbuffer)+100]; //grandezza del buffer della base FILE *file, *f_out; if ((file = fopen(nomefileb, "rb")) && (f_out = fopen("cript10.bmp", "wb"))){ printf("files aperti con successo!!\n"); long b; //byte letti b = fread( buf, 1, 54, file); unsigned int coordx = buf[18]+buf[19]*256; unsigned int coordy = buf[22]+buf[23]*256; printf("caratteristiche immagine: %d x %d\n",coordx,coordy); fwrite( buf, 1, b, f_out); printf("header scritto...\n"); //******************************INIZIO MODE DEL FILE*********************************// b = fread( buf, 1, lbuffer, file); printf("file caricato nel buffer...\n"); long x; int tc = 4, tc2 = 10;//filtri.... printf("LA SENSIBILITà DEI TRATTI SONO: %d-%d \n",tc,tc2); for(x=coordx*3+1;x < b-coordx*3-1;x=x+3){ unsigned char media = ( buf[x]+buf[(x+1)]+buf[(x+2)] ) / 3; unsigned char media_s = ( buf[x-3]+buf[(x-2)]+buf[(x-1)] ) / 3; unsigned char media_d = ( buf[x+3]+buf[(x+4)]+buf[(x+5)] ) / 3; unsigned char media_u = ( buf[x-(coordx*3)]+buf[(x-(coordx*3)+1)]+buf[(x-(coordx*3)+2)] ) / 3; unsigned char media_g = ( buf[x+(coordx*3)]+buf[(x+(coordx*3)+1)]+buf[(x+(coordx*3)+2)] ) / 3; unsigned char media_us = ( buf[x-(coordx*3)-3]+buf[(x-(coordx*3)+1)-3]+buf[(x-(coordx*3)+2)-3] ) / 3; unsigned char media_gd = ( buf[x+(coordx*3)+3]+buf[(x+(coordx*3)+1)+3]+buf[(x+(coordx*3)+2)+3] ) / 3; unsigned char media_ud = ( buf[x-(coordx*3)+3]+buf[(x-(coordx*3)+1)+3]+buf[(x-(coordx*3)+2)+3] ) / 3; unsigned char media_gs = ( buf[x+(coordx*3)-3]+buf[(x+(coordx*3)+1)-3]+buf[(x+(coordx*3)+2)-3] ) / 3; int result1, result2,result3,result4; int temp1 = media_s - media_d; int temp2 = media_u - media_g; int temp3 = media_us - media_gd; int temp4 = media_ud - media_gs; if(temp1 > 0 ) { result1 = (media_s - media_d); } else result1 = 0 - (media_s - media_d); if(temp2 > 0 ) { result2 = (media_u - media_g); } else result2 = 0 - (media_u - media_g); if(temp3 > 0 ) { result3 = (media_us - media_gd); } else result3 = 0 - (media_us - media_gd); if(temp4 > 0 ) { result4 = (media_ud - media_gs); } else result4 = 0 - (media_ud - media_gs); if( //filtro del bianco ( result1 < tc ) && ( result2 < tc ) && ( result3 < tc ) && ( result4 < tc ) ) { nbuf[x] = 255;nbuf[x+1]=255;nbuf[x+2]=255; } else if( //filtro del secondo colore ( result1 < tc2 ) && ( result2 < tc2 ) && ( result3 < tc2 ) && ( result4 < tc2 ) ) { nbuf[x] = 192;nbuf[x+1]=192;nbuf[x+2]=192; } else { nbuf[x] = 0;nbuf[x+1]=0;nbuf[x+2]=0; } //nero } fwrite( nbuf, 1, b, f_out); } fclose(file); fclose(f_out); system("PAUSE"); return 1; }