1)Apri PAINT e crea/salva un file di nome "origine.bmp"
2)ORA da C/C++, devi aprire il file origine.bmp in modalità binaria... (non ascii)
Questa routine C, legge il tuo file bitmap (chiamato "origine.bmp")
e crea un file C/C++ (eseguibile.cpp) pronto per essere compilato in EXE e distribuito. Questo ultimo conterra l'array con il codice decimale per creare la bitmap
(identica a quella mappata dal primo programma (che non è altro che un "caricatore").
codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *in, *out;
int i=0, j=0;
out = fopen("./origine.bmp", "rb");
in = fopen("./eseguibile.cpp", "wb");
//creo/scrivo il file eseguibile.cpp
fprintf(in, "#include <stdio.h>\n");
fprintf(in, "#include <stdlib.h>\n\n");
fprintf(in, "int main(){\n");
fprintf(in, "int i;\n");
fprintf(in, "FILE *p;\n");
fprintf(in, "int bmp[]={");
//creo l'array contenente il codice decimale della bitmap di origine
while(!feof(out))
{
fread(&i, sizeof(char), 1, out);
fprintf(in, "%d, ", i);
j++;
}
fseek(in, -2, 1);
fprintf(in, "};\n");
//continuo a scrivere il listato per il secondo eseguibile
fprintf(in, "p = fopen(\"./bitmap.bmp\", \"wb\");\n");
fprintf(in, "for(i=0; i<%d; i++) fprintf(p, \"%%c\", bmp[i]);\n", j);
fprintf(in, "fclose(p);\n");
fprintf(in, "printf(\"Bitmap creata\\n\");\n");
fprintf(in, "system(\"start bitmap.bmp\");\n");
fprintf(in, "system(\"pause\");\n");
fprintf(in, "return 0;\n");
fprintf(in, "}\n");
// ora chiudo la routine in questo file "caricatore"
fclose(in);
fclose(out);
printf("TOT. BYTE: %d\n", --j);
system("PAUSE");
return 0;
}
p.s. se modifichi l'estensione (es: JPG , WAV , ecc)
funziona anche con altri formati.
Ora distribuisci soltanto il file ESEGUIBILE.EXE