|
|
|
@ -7,7 +7,7 @@ |
|
|
|
|
#include <stdio.h> |
|
|
|
|
#include <stdlib.h> |
|
|
|
|
#include <unistd.h> |
|
|
|
|
#include "string.h" |
|
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
#include "../floatimg.h" |
|
|
|
|
|
|
|
|
@ -16,7 +16,8 @@ extern int verbosity; /* must be declared around main() */ |
|
|
|
|
/* ---------------------------------------------------------------- */ |
|
|
|
|
int fimg_fileinfos(char *fname, int *datas) |
|
|
|
|
{ |
|
|
|
|
FILE *fp; |
|
|
|
|
FILE *fp; |
|
|
|
|
FimgFileHead filehead; |
|
|
|
|
|
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, ">>> %-25s ( '%s' %p )\n", __func__, fname, datas); |
|
|
|
@ -27,29 +28,43 @@ if (NULL==fp) { |
|
|
|
|
perror(fname); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
if (3 != fread(datas, sizeof(int), 3, fp)) { |
|
|
|
|
fprintf(stderr, "%s: %s short read\n", __func__, fname); |
|
|
|
|
|
|
|
|
|
if (1 != fread(&filehead, sizeof(FimgFileHead), 1, fp)) { |
|
|
|
|
fprintf(stderr, "%s: %s bad read\n", __func__, fname); |
|
|
|
|
fclose(fp); |
|
|
|
|
return -2; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fclose(fp); |
|
|
|
|
|
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, " magic [%s]\n", filehead.magic); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (strncmp(filehead.magic, "FIMG", 4)) { |
|
|
|
|
fprintf(stderr, "'%s' is not a fimg file.\n", fname); |
|
|
|
|
return -3; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
datas[0] = filehead.w; |
|
|
|
|
datas[1] = filehead.h; |
|
|
|
|
datas[2] = filehead.t; |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
/* ---------------------------------------------------------------- */ |
|
|
|
|
int fimg_dump_to_file(FloatImg *head, char *fname, int notused) |
|
|
|
|
int fimg_dump_to_file(FloatImg *fimg, char *fname, int notused) |
|
|
|
|
{ |
|
|
|
|
FILE *fp; |
|
|
|
|
int foo, nbre, dims[3]; |
|
|
|
|
FILE *fp; |
|
|
|
|
int foo, nbre; |
|
|
|
|
FimgFileHead filehead; |
|
|
|
|
|
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, ">>> %-25s ( %p '%s' %d )\n", __func__, head, |
|
|
|
|
fprintf(stderr, ">>> %-25s ( %p '%s' %d )\n", __func__, fimg, |
|
|
|
|
fname, notused); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
if (3 != head->type) { |
|
|
|
|
fprintf(stderr, "%s : bat type %d\n", __func__, head->type); |
|
|
|
|
if (3 != fimg->type) { |
|
|
|
|
fprintf(stderr, "%s : bat type %d\n", __func__, fimg->type); |
|
|
|
|
return -8; |
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -59,22 +74,23 @@ if (NULL==fp) { |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
dims[0] = head->width; dims[1] = head->height; |
|
|
|
|
dims[2] = head->type; |
|
|
|
|
strcpy(filehead.magic, "FIMG"); |
|
|
|
|
filehead.w = fimg->width; filehead.h = fimg->height; |
|
|
|
|
filehead.t = fimg->type; |
|
|
|
|
|
|
|
|
|
foo = fwrite(dims, sizeof(int), 3, fp); |
|
|
|
|
if (3 != foo) { |
|
|
|
|
foo = fwrite(&filehead, sizeof(FimgFileHead), 1, fp); |
|
|
|
|
if (1 != foo) { |
|
|
|
|
perror(fname); |
|
|
|
|
fclose(fp); |
|
|
|
|
return -2; |
|
|
|
|
} |
|
|
|
|
nbre = head->width*head->height*3; |
|
|
|
|
nbre = fimg->width*fimg->height*3; |
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, " %s : data at %p\n", __func__, head->R); |
|
|
|
|
fprintf(stderr, " %s : data at %p\n", __func__, fimg->R); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
foo = fwrite(head->R, sizeof(float), nbre, fp); |
|
|
|
|
if (nbre!=foo) { |
|
|
|
|
foo = fwrite(fimg->R, sizeof(float), nbre, fp); |
|
|
|
|
if (nbre != foo) { |
|
|
|
|
perror(fname); |
|
|
|
|
fclose(fp); |
|
|
|
|
return -3; |
|
|
|
@ -85,10 +101,12 @@ fclose(fp); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
/* ---------------------------------------------------------------- */ |
|
|
|
|
|
|
|
|
|
int fimg_create_from_dump(char *fname, FloatImg *head) |
|
|
|
|
{ |
|
|
|
|
FILE *fp; |
|
|
|
|
int foo, dims[3]; |
|
|
|
|
FILE *fp; |
|
|
|
|
int foo; |
|
|
|
|
FimgFileHead filehead; |
|
|
|
|
|
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, ">>> %-25s ( '%s' %p )\n", __func__, fname, head); |
|
|
|
@ -100,24 +118,24 @@ if (NULL==fp) { |
|
|
|
|
exit(1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foo = fread(dims, sizeof(int), 3, fp);
|
|
|
|
|
if (3 != foo) { |
|
|
|
|
foo = fread(&filehead, sizeof(FimgFileHead), 1, fp);
|
|
|
|
|
if (1 != foo) { |
|
|
|
|
fprintf(stderr, "%s : short read\n", fname); |
|
|
|
|
fclose(fp); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
#if DEBUG_LEVEL |
|
|
|
|
fprintf(stderr, "%s : got [ %d %d %d ] from '%s'\n", __func__, |
|
|
|
|
dims[0], dims[1], dims[2], fname); |
|
|
|
|
filehead.w, filehead.h, filehead.t, fname); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
foo = fimg_create(head, dims[0], dims[1], dims[2]);
|
|
|
|
|
foo = fimg_create(head, filehead.w, filehead.h, filehead.t);
|
|
|
|
|
if (foo) { |
|
|
|
|
fprintf(stderr, "%s : create -> %d\n", __func__, foo); |
|
|
|
|
return foo; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
foo = fread(head->R, sizeof(float), dims[0]*dims[1]*3, fp); |
|
|
|
|
foo = fread(head->R, sizeof(float), filehead.w*filehead.h*3, fp); |
|
|
|
|
|
|
|
|
|
fclose(fp); |
|
|
|
|
|
|
|
|
|