#include #include #include #include int MKBYTE(f,imx,kmx,jmx,fflnm,rmin,rmax) float *f,*rmin,*rmax; int *imx,*kmx,*jmx; _fcd fflnm; { char *flnm; int lenflnm, fp, i,k,j,ix; unsigned char *data; float spval=1.e36; lenflnm = _fcdlen(fflnm); flnm = malloc(lenflnm+1); strncpy(flnm,_fcdtocp(fflnm),lenflnm); *(flnm+lenflnm) = '\0'; fp=open(flnm,O_WRONLY|O_APPEND|O_CREAT,0644); data = (unsigned char *)malloc((*imx)*(*kmx)); /* * data[kmx][imx] <- f(imx,kmx,j) for each j: */ for (j=0; j < *jmx; j++) { for (k=0; k < *kmx; k++) { for (i=0; i < *imx; i++) { ix = j*(*kmx)*(*imx)+k*(*imx)+i; *(data+k*(*imx)+i) = (int)(255.*(*(f+ix)-(*rmin)) / (*rmax-(*rmin))+0.5); } } write(fp,data,(*imx)*(*kmx)); } close(fp); printf("mkbyte: wrote file %s \n",flnm); }