/****************************************************************/
/* */
/* Program oneimage.c */
/* To create a 2-D raw image file from one slice */
/* of a 3-D model microstructure */
/* */
/* Programmer: Dale P. Bentz */
/* NIST */
/* 100 Bureau Drive Mail Stop 8621 */
/* Gaithersburg, MD 20899-8621 */
/* Phone: (301) 975-5865 */
/* E-mail: dale.bentz@.nist.gov */
/* Date: Summer 1999 */
/* */
/****************************************************************/
#include <stdio.h>
#include <math.h>
main(){
FILE *infile,*outfile;
char filein[80],fileout[80];
int valin;
int valout,i1,j1;
int i,nskip,dx,dy,j,scf,iscale,dxtot,dytot;
static short int image[1000][1000];
static short int red[50],green[50],blue[50];
for(i1=0;i1<50;i1++){
red[i1]=0;
green[i1]=0;
blue[i1]=0;
}
for(i1=10;i1<24;i1++){
red[i1]=192;
green[i1]=255;
blue[i1]=128;
}
red[12]=0;
green[12]=0;
blue[12]=255;
red[13]=255;
green[13]=128;
blue[13]=0;
red[1]=255;
green[2]=255;
blue[2]=255;
green[3]=255;
red[4]=255;
green[4]=255;
red[5]=128;
green[5]=128;
blue[5]=128;
red[6]=64;
green[6]=64;
blue[6]=64;
red[7]=192;
green[7]=192;
blue[7]=192;
red[8]=255;
green[8]=128;
blue[8]=64;
red[9]=128;
green[9]=128;
blue[9]=255;
red[24]=255;
blue[24]=255;
red[35]=255;
green[35]=255;
blue[35]=255;
red[38]=255;
green[38]=255;
blue[38]=255;
printf("Enter name of file with raw (3-D image) data \n");
scanf("%s",filein);
printf("%s\n",filein);
printf("Enter name of image file to create \n");
scanf("%s",fileout);
printf("%s\n",fileout);
printf("Enter number of pixels to skip at start of image file \n");
scanf("%d",&nskip);
printf("%d\n",nskip);
dx=dy=100;
printf("Enter factor to scale image by\n");
scanf("%d",&iscale);
printf("%d\n",iscale);
infile=fopen(filein,"r");
outfile=fopen(fileout,"w");
for(i=0;i<nskip;i++){
fscanf(infile,"%d",&valin);
}
fprintf(outfile,"P3\n");
fprintf(outfile,"%d %d\n",dx*iscale,dy*iscale);
fprintf(outfile,"255\n");
dxtot=dx*iscale;
dytot=dy*iscale;
for(j=0;j<dy;j++){
for(i=0;i<dx;i++){
fscanf(infile,"%d",&valin);
valout=valin;
for(j1=0;j1<iscale;j1++){
for(i1=0;i1<iscale;i1++){
image[i*iscale+i1][j*iscale+j1]=valout;
}
}
}
}
fclose(infile);
for(j=0;j<dytot;j++){
for(i=0;i<dxtot;i++){
fprintf(outfile,"%d %d %d\n",red[image[i][j]],green[image[i][j]],
blue[image[i][j]]);
}
}
fclose(outfile);
}