|
|
|
@ -131,17 +131,17 @@ fputs("\n", fp); |
|
|
|
|
} |
|
|
|
|
/* ---------------------------------------------------------------- */ |
|
|
|
|
/*
|
|
|
|
|
* |
|
|
|
|
* bit 0 of flags : use fvalue/count |
|
|
|
|
*/ |
|
|
|
|
int fimg_save_as_pnm(FloatImg *head, char *fname, int notused) |
|
|
|
|
int fimg_save_as_pnm(FloatImg *head, char *fname, int flags) |
|
|
|
|
{ |
|
|
|
|
FILE *fp; |
|
|
|
|
float maximum, fk; |
|
|
|
|
char *code; |
|
|
|
|
|
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, ">>> %-25s ( %p '%s' %d )\n", __func__, head, |
|
|
|
|
fname, notused); |
|
|
|
|
fprintf(stderr, ">>> %-25s ( %p '%s' 0x%04x )\n", __func__, head, |
|
|
|
|
fname, flags); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if ( head->type != FIMG_TYPE_RGB && head->type != FIMG_TYPE_GRAY) { |
|
|
|
@ -163,10 +163,18 @@ switch(head->type) { |
|
|
|
|
|
|
|
|
|
fprintf(fp, "%s\n%d %d\n", code, head->width, head->height); |
|
|
|
|
|
|
|
|
|
maximum = fimg_get_maxvalue(head); |
|
|
|
|
fprintf(fp, "# maxval %15f\n", maximum); |
|
|
|
|
fk = maximum / 65535.0; |
|
|
|
|
fprintf(fp, "# divisor %15f\n", fk); |
|
|
|
|
if ( flags & 1 ) { |
|
|
|
|
fprintf(stderr, "%s using fval/count %f %d -> %f\n", __func__, |
|
|
|
|
head->fval, head->count, |
|
|
|
|
head->fval * head->count); |
|
|
|
|
fk = (head->fval * head->count) / 65535.0; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
maximum = fimg_get_maxvalue(head); |
|
|
|
|
fk = maximum / 65535.0; |
|
|
|
|
fprintf(fp, "# maxval %15f\n# divisor %15f\n", maximum, fk); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fprintf(fp, "65535\n"); |
|
|
|
|
fflush(fp); |
|
|
|
|
|
|
|
|
|