diff --git a/tools/fimg2text.c b/tools/fimg2text.c index 18f1e1c..1dc8007 100644 --- a/tools/fimg2text.c +++ b/tools/fimg2text.c @@ -1,5 +1,6 @@ /* * converting a floatimg to a machinable text file + * an ugly software from tTh - february 2021 */ #include @@ -46,7 +47,37 @@ for (y=0; yheight; y+=steps) { return 0; } /* ------------------------------------------------------------------------- */ -int convertir_fimg_en_machinable(char *srcname, char *dstname, int steps) +static int normalize(FloatImg *pimg, float vmax) +{ +float mmv[6], maxi, coef; +int foo, sz, idx; + +// #if DEBUG_LEVEL +fprintf(stderr, ">>> %s ( %p %g )\n", __func__, pimg, vmax); +// #endif + +foo = fimg_get_minmax_rgb(pimg, mmv); +fimg_print_minmax(mmv, "norm it ?"); + maxi = mmv[1]; +if (mmv[3] > maxi) maxi = mmv[3]; +if (mmv[5] > maxi) maxi = mmv[5]; +fprintf(stderr, "maximum = %f\n", maxi); +coef = vmax / maxi; +fprintf(stderr, "coef = %f\n", coef); + +sz = pimg->width * pimg->height; + +for (idx=0; idxR[idx] *= coef; + pimg->G[idx] *= coef; + pimg->B[idx] *= coef; + } + +return 0; +} +/* ------------------------------------------------------------------------- */ +int convertir_fimg_en_machinable(char *srcname, char *dstname, + int steps, float norm) { int foo, infos[3]; FloatImg fimg; @@ -78,6 +109,10 @@ if (foo) { if (verbosity) { fimg_describe(&fimg, srcname); } +if (norm > 0.0) { + fprintf(stderr, "normalize %p\n", &fimg); + foo = normalize(&fimg, norm); + } foo = export_as_machinable(&fimg, dstname, steps, 0); @@ -88,12 +123,12 @@ return 0; /* ------------------------------------------------------------------------- */ void help(int k) { - puts("usage:\n\tfimg2text [options] foo.fimg > bar.csv"); puts("options:"); puts("\t-v\tincrease verbosity"); +puts("\t-n 3.14\tnormalize picture"); +puts("\t-s N\nsteps on x & y"); if (verbosity) fimg_print_version(1); - exit(0); } /* ------------------------------------------------------------------------- */ @@ -102,12 +137,14 @@ int main(int argc, char *argv[]) { int foo, opt; int steps = 16; +float norm_val = 222.0; /* < 0 : don't normalize */ while ((opt = getopt(argc, argv, "hs:v")) != -1) { switch(opt) { - case 'v': verbosity++; break; - case 'h': help(1); exit(1); - case 's': steps = atoi(optarg); break; + case 'v': verbosity++; break; + case 'h': help(1); exit(1); + case 's': steps = atoi(optarg); break; + case 'n': norm_val = atof(optarg); break; } } @@ -116,7 +153,7 @@ if (1 != argc-optind) { exit(1); } -foo = convertir_fimg_en_machinable(argv[optind], "-", steps); +foo = convertir_fimg_en_machinable(argv[optind], "-", steps, norm_val); if (foo) fprintf(stderr, "%s : got a %d from convertor\n", argv[0], foo);