38 char temp[FILENAME_MAX];
40 if(
IMG_TEST) {printf(
"imgRead(%s, *img)\n", fname); fflush(stdout);}
51 if(
IMG_TEST) {printf(
"imgReadNifti() := %d\n", ret); fflush(stdout);}
53 if(
IMG_TEST) printf(
"%s identified as supported NIfTI.\n", fname);
65 if(
IMG_TEST) printf(
"%s identified as microPET format.\n", fname);
72 if(
IMG_TEST) {printf(
"imgReadAnalyze() := %d\n", ret); fflush(stdout);}
74 if(
IMG_TEST) printf(
"%s identified as supported Analyze 7.5 format.\n", fname);
78 if(ret==STATUS_NOSIFDATA || ret==STATUS_WRONGSIFDATA) {
85 if((fp=fopen(fname,
"rb")) == NULL) {
90 if(ret) {fclose(fp); img->
statmsg=
imgStatus(STATUS_UNKNOWNFORMAT);
return(4);}
92 if(strncmp(ecat7_main_header.
magic_number, ECAT7V_MAGICNR, 7)==0) {
100 if(
IMG_TEST) printf(
"%s identified as supported ECAT 7.x %s format\n",
103 if(ret) {
if(
IMG_TEST) printf(
"imgReadEcat7()=%d\n", ret);
return(6);}
110 if(
IMG_TEST) printf(
"%s identified as supported ECAT 6.3 %s format\n",
144 if(
IMG_TEST) printf(
"imgWrite(%s, *img)\n", fname);
146 if(fname==NULL)
return(1);
156 if(
IMG_TEST>1) printf(
" file format determined based on file name\n");
211 printf(
"\nimgReadHeader(%s, *img, %d)\n", fname, format);
216 if(fname==NULL)
return STATUS_FAULT;
217 if(img==NULL)
return STATUS_FAULT;
222 int scanner, imgtype, modality;
224 &format, &scanner, &imgtype, &modality,
IMG_TEST-3);
231 return(STATUS_UNSUPPORTED);
236 ret=STATUS_UNSUPPORTED;
290 printf(
"\nimgReadFrame(%s, %d, *img, %d)\n", fname, frame_to_read, frame_index);
296 if(fname==NULL)
return STATUS_FAULT;
297 if(img==NULL)
return STATUS_FAULT;
299 if(frame_to_read<1)
return STATUS_FAULT;
300 if(frame_index<0)
return STATUS_FAULT;
304 if(frame_index>img->
dimt-1)
return STATUS_FAULT;
316 if(
IMG_TEST>1) printf(
"imgReadHeader() return message := %s\n", test_img.
statmsg);
327 imgEmpty(&test_img);
if(ret>0)
return STATUS_INVALIDHEADER;
331 if(
IMG_TEST>1) printf(
"imgReadHeader() return message := %s\n", img->
statmsg);
337 if(ret)
return STATUS_NOMEMORY;
349 if(
IMG_TEST>1) printf(
"imgReadEcat7Frame() return value := %d\n", ret);
353 if(
IMG_TEST>1) printf(
"imgReadEcat63Frame() return value := %d\n", ret);
358 if(
IMG_TEST>1) printf(
"imgReadAnalyzeFrame() return value := %d\n", ret);
363 if(
IMG_TEST>1) printf(
"imgReadNiftiFrame() return value := %d\n", ret);
367 if(
IMG_TEST>1) printf(
"imgReadAnalyzeFrame() return value := %d\n", ret);
370 ret=STATUS_UNSUPPORTED;
412 printf(
"\nimgWriteFrame(%s, %d, *img, %d)\n", fname, frame_to_write, frame_index);
418 fprintf(stdout,
" scan_start_time := %s\n", buf);
424 if(fname==NULL)
return STATUS_FAULT;
425 if(img==NULL)
return STATUS_FAULT;
427 if(frame_to_write<0)
return STATUS_FAULT;
428 if(frame_index<0 || frame_index>=img->
dimt)
return STATUS_FAULT;
446 ret=STATUS_UNSUPPORTED;
458 ret=STATUS_UNSUPPORTED;
465 ret=STATUS_UNSUPPORTED;
489 char *cptr=NULL, *cptr2=NULL, temp[FILENAME_MAX];
491 if(
IMG_TEST>2) printf(
"imgFormatFromFName(img, %s)\n", fname);
498 strcpy(temp, fname); cptr=strrchr(temp,
'.');
500 *cptr=(char)0; cptr++;
501 cptr2=strrchr(temp,
'.');
if(cptr2!=NULL) {*cptr2=(char)0; cptr2++;}
510 if(strcasecmp(cptr,
"img")==0 ||
511 strcasecmp(cptr,
"scn")==0 ||
512 strcasecmp(cptr,
"nrm")==0 ||
513 strcasecmp(cptr,
"atn")==0) {
567 char *cptr, temp[FILENAME_MAX];
572 if(verbose>0) {printf(
"imgFormatDetermine(\"%s\", ...)\n", fname); fflush(stdout);}
574 if(basename!=NULL) strcpy(basename,
"");
575 if(hdrfile!=NULL) strcpy(hdrfile,
"");
576 if(imgfile!=NULL) strcpy(imgfile,
"");
577 if(siffile!=NULL) strcpy(siffile,
"");
582 if(fname==NULL)
return STATUS_FAULT;
583 if(strlen(fname)<1)
return STATUS_NOFILE;
587 if(access(temp, 0) == -1) {
588 if(verbose>1) printf(
" file is not directly accessible.\n");
590 sprintf(temp,
"%s.nii", fname);
591 if(access(temp, 0) == -1) {
592 if(verbose>1) printf(
" file is not accessible with .nii extension.\n");
594 sprintf(temp,
"%s.img", fname);
595 if(access(temp, 0) == -1) {
596 if(verbose>1) printf(
" file is not accessible with .img extension.\n");
598 sprintf(temp,
"%s.hdr", fname);
599 if(access(temp, 0) == -1) sprintf(temp,
"%s.i.hdr", fname);
600 if(access(temp, 0) == -1) sprintf(temp,
"%s.img.hdr", fname);
601 if(access(temp, 0) == -1) {
602 if(verbose>1) printf(
" file is not accessible with .hdr extension.\n");
604 sprintf(temp,
"%s.dcm", fname);
605 if(access(temp, 0) == -1) {
606 if(verbose>1) printf(
" file is not accessible with .dcm extension.\n");
607 return STATUS_NOFILE;
613 if(verbose>1) {printf(
"'%s' is accessible.\n", temp); fflush(stdout);}
616 cptr=strrchr(temp,
'.');
617 if(cptr!=NULL && strcasecmp(cptr,
".DCM")==0) {
618 fformat=
IMG_DICOM;
if(file_format!=NULL) *file_format=fformat;
619 if(verbose>1) printf(
"file was identified to be in DICOM format.\n");
630 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
631 if(verbose>1) printf(
"file was identified to be in ECAT7 format.\n");
632 }
else if(ret==STATUS_VARMATSIZE) {
633 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
634 if(verbose>1) printf(
"file is ECAT7 but matrix sizes are different\n.");
635 }
else if(ret==STATUS_UNKNOWNFORMAT || ret==STATUS_NOFILE) {
640 if(ret!=STATUS_OK && ret!=STATUS_VARMATSIZE && ret!=STATUS_MISSINGMATRIX) {
645 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
646 if(verbose>1) printf(
"file was identified to be in ECAT6 format.\n");
647 }
else if(ret==STATUS_VARMATSIZE || ret==STATUS_MISSINGMATRIX) {
648 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
649 if(verbose>1) printf(
"file is ECAT63 but matrix sizes are different\n.");
657 niftiExists(fname, hdrfile, imgfile, siffile, &nifti_dsr, verbose-2, NULL)>0)
659 if(verbose>1) printf(
"file was identified to be in NIfTI format.\n");
663 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
669 fformat=
IMG_MICROPET;
if(file_format!=NULL) *file_format=fformat;
670 if(verbose>1) printf(
"file was identified to be in microPET format\n.");
674 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
680 if(verbose>1) printf(
"file was identified to be in Analyze format.\n");
681 fformat=
IMG_ANA;
if(file_format!=NULL) *file_format=fformat;
685 fformat=img.
_fileFormat;
if(file_format!=NULL) *file_format=fformat;
692 fformat=
IMG_DICOM;
if(file_format!=NULL) *file_format=fformat;
693 if(verbose>1) printf(
"file was identified to be in DICOM format.\n");
699 fformat=
IMG_INTERFILE;
if(file_format!=NULL) *file_format=fformat;
700 if(verbose>1) printf(
"file was identified to be in Interfile format\n.");
704 if(scanner!=NULL) *scanner=img.
scanner;
705 if(type!=NULL) *type=img.
type;
706 if(modality!=NULL) *modality=img.
modality;
710 if(verbose>1) printf(
"fformat := %d\n", fformat);
int anaExistsNew(const char *filename, char *hdrfile, char *imgfile, char *siffile)
int anaDatabaseExists(const char *dbname, char *hdrfile, char *imgfile, char *siffile)
void anaRemoveFNameExtension(char *fname)
char * ctime_r_int(const time_t *t, char *buf)
Convert calendard time t into a null-terminated string of the form YYYY-MM-DD hh:mm:ss,...
int dcmVerifyMagic(const char *filename, FILE *fp)
int ecat63ReadMainheader(FILE *fp, ECAT63_mainheader *h)
char * ecat7filetype(short int file_type)
int ecat7ReadMainheader(FILE *fp, ECAT7_mainheader *h)
char * imgStatus(int status_index)
int imgAllocate(IMG *image, int planes, int rows, int columns, int frames)
void imgSetStatus(IMG *img, int status_index)
void imgEmpty(IMG *image)
int imgWriteAnalyze(const char *dbname, IMG *img)
int imgReadAnalyzeFrame(const char *fname, int frame_to_read, IMG *img, int frame_index)
int imgReadAnalyzeHeader(const char *dbname, IMG *img)
int imgReadAnalyze(const char *dbname, IMG *img)
int ecat63WriteAllImg(const char *fname, IMG *img)
int imgWriteEcat63Frame(const char *fname, int frame_to_write, IMG *img, int frame_index)
int imgReadEcat63Header(const char *fname, IMG *img)
int imgReadEcat63Frame(const char *fname, int frame_to_read, IMG *img, int frame_index)
int ecat63ReadAllToImg(const char *fname, IMG *img)
int imgWrite2DEcat7(const char *fname, IMG *img)
int imgWriteEcat7(const char *fname, IMG *img)
int imgReadEcat7Frame(const char *fname, int frame_to_read, IMG *img, int frame_index)
int imgEcat7Supported(ECAT7_mainheader *h)
int imgReadEcat7(const char *fname, IMG *img)
int imgReadEcat7Header(const char *fname, IMG *img)
int imgWriteEcat7Frame(const char *fname, int frame_to_write, IMG *img, int frame_index)
int imgWritePolarmap(const char *fname, IMG *img)
int imgReadNiftiHeader(const char *filename, IMG *img, int verbose)
int imgReadNifti(const char *filename, IMG *img, int verbose)
int imgReadNiftiFrame(const char *filename, int frame_to_read, IMG *img, int frame_index, int verbose)
int imgWriteNiftiFrame(const char *dbname, int frame_to_write, IMG *img, int frame_index, float fmin, float fmax, int verbose)
int imgWriteNifti(const char *dbname, IMG *img, int save_sif, int verbose)
int imgGetNiftiHeader(IMG *img, NIFTI_DSR *dsr, int verbose)
int imgReadMicropetFrame(const char *fname, int frame_to_read, IMG *img, int frame_index)
int imgReadMicropetHeader(const char *dbname, IMG *img)
int imgReadMicropet(const char *fname, IMG *img)
int imgFormatDetermine(const char *fname, char *basename, char *hdrfile, char *imgfile, char *siffile, int *file_format, int *scanner, int *type, int *modality, int verbose)
int imgRead(const char *fname, IMG *img)
int imgWriteFrame(const char *fname, int frame_to_write, IMG *img, int frame_index)
int imgReadFrame(const char *fname, int frame_to_read, IMG *img, int frame_index)
void imgFormatFromFName(IMG *img, const char *fname)
int imgWrite(const char *fname, IMG *img)
int imgReadHeader(const char *fname, IMG *img, int format)
int interfileExists(const char *fname, char *hdrfile, char *imgfile, int verbose)
Header file for libtpcimgio.
#define IMG_STATUS_OCCUPIED
#define IMG_TYPE_POLARMAP
#define IMG_STATUS_INITIALIZED
int niftiExists(const char *dbname, char *hdrfile, char *imgile, char *siffile, NIFTI_DSR *header, int verbose, char *status)
int upetExists(const char *upetname, char *hdrfile, char *imgfile, int verbose)
#define IMG_MODALITY_UNKNOWN