#include #include #include #include #define ISIZEX 580 #define ISIZEY 440 #define NUMPIX (ISIZEX * ISIZEY * 3) #define MAX(x,y) (((x)>(y))?(x):(y)) #define MIN(x,y) (((x)<(y))?(x):(y)) #define pi2 6.2831854 typedef float IMAGE; int numi; /* number of images */ void do_it(char *argv[]); void add(IMAGE *A,IMAGE *B,float c); float *new_image() { float *new_im, *pix; int i,j,c; new_im = malloc(4 * NUMPIX); pix=new_im; for (i=0;i=256) { buf[i] = 255; } else { buf[i] = (unsigned char)((int)(a)); } } size=fwrite(buf,NUMPIX,1,fptr1); fclose(fptr1); free(buf); printf("Image written to %s, size is %d bytes.\n",file,NUMPIX); } main(argc,argv) int argc; char *argv[]; { int i; if (argc < 3) { printf("Specular Compositer\n"); printf("(C) 1992 Paul E. Debevec\n"); printf("Usage: %s \n",argv[0]); exit(-1); } numi = (argc-1)/2; printf("%d diffuse+specular images to process.\n",numi); do_it(argv); } void add(IMAGE *A,IMAGE *B,float c) { int i; for (i = 0; i < NUMPIX; i++) { A[i] += c * B[i]; } } void do_it(char *argv[]) { IMAGE *SPEC; IMAGE *I; IMAGE *DIFF; int i; SPEC=(IMAGE *)new_image(); DIFF=(IMAGE *)new_image(); I=(IMAGE *)new_image(); for (i=0;i