Пример #1
0
void reverse_hdr(AnalyzeHeader *hdr)
{
	int		i;
	
    // header key
	reverse_int(&(*hdr).sizeof_hdr);
	reverse_int(&(*hdr).extents);
	reverse_short(&(*hdr).session_error);
	
	// image dimension
	for(i=1;i<8;i++) reverse_short(&(*hdr).dim[i]);		// dim[0]<0 or dim[0]>15 => little endian
	for(i=0;i<7;i++) reverse_short(&(*hdr).unused[i]);
	reverse_short(&(*hdr).datatype);
	reverse_short(&(*hdr).bitpix);
	reverse_short(&(*hdr).dim_un0);
	for(i=0;i<8;i++) reverse_float(&(*hdr).pixdim[i]);
	reverse_float(&(*hdr).vox_offset);
	for(i=0;i<3;i++) reverse_float(&(*hdr).funused[i]);
	reverse_float(&(*hdr).cal_max);
	reverse_float(&(*hdr).cal_min);
	reverse_float(&(*hdr).compressed);
	reverse_float(&(*hdr).verified);
	reverse_int(&(*hdr).glmax);
	reverse_int(&(*hdr).glmin);
	
	// data history
	reverse_int(&(*hdr).views);
	reverse_int(&(*hdr).vols_added);
	reverse_int(&(*hdr).start_field);
	reverse_int(&(*hdr).field_skip);
	reverse_int(&(*hdr).omax);
	reverse_int(&(*hdr).omin);
	reverse_int(&(*hdr).smax);
	reverse_int(&(*hdr).smin);
}
Пример #2
0
void reverse_img(char *img, AnalyzeHeader hdr)
{
	int		i,sz=hdr.dim[1]*hdr.dim[2]*hdr.dim[3];
	
	switch(hdr.datatype)
	{
		case 2: break;
		case 4: for(i=0;i<sz;i++) reverse_short(&((short*)img)[i]);	break;
		case 8: for(i=0;i<sz;i++) reverse_int(&((int*)img)[i]);	break;
		case 16:for(i=0;i<sz;i++) reverse_float(&((float*)img)[i]);	break;
	}
}	
Пример #3
0
int main (int argc, char **argv)
{
    const char *binfile = "fedstl.bin";
    const char *datfile = "fedstl.dat";
    char datpath[512];
    int swap_ends = 0;
    FILE *fdat, *fbin;
    double xx;
    float x;

    if (argc == 2 && !strcmp(argv[1], "--swap-ends")) {
	swap_ends = 1;
	argc--;
    } else if (argc == 3 && !strcmp(argv[2], "--swap-ends")) {
	swap_ends = 1;
	argc--;
    }

    if (swap_ends) {
	puts("*** making data file with swapped endianness");
    }

    if (argc > 1) {
	sprintf(datpath, "%s/%s", argv[1], datfile);
    } else {
	strcpy(datpath, datfile);
    }

    fdat = fopen(datpath, "r");
    if (fdat == NULL) {
	fprintf(stderr, "Couldn't open %s\n", datfile);
	exit(EXIT_FAILURE);
    }

    fbin = fopen(binfile, "wb");
    if (fbin == NULL) {
	fprintf(stderr, "Couldn't open %s\n", binfile);
	exit(EXIT_FAILURE);
    }

    while (fscanf(fdat, "%lf", &xx) == 1) {
	x = xx;
	if (swap_ends) {
	    reverse_float(x);
	}
	fwrite(&x, sizeof x, 1, fbin);
    }

    fclose(fbin);
    fclose(fdat);

    return 0;
}