#include #include #define NXIMG 10800 #define NYIMG 6336 #define NCHUNK 2 /* NYIMG/NCHUNK must divide evenly. Choose NCHUNK so that 2*NXIMG*(NYIMG/NCHUNK) bytes fits easily in core */ main(argc, argv) int argc; char **argv; { FILE *fp1, *fp2, *fp3; int i, j, npixels, ichunk, ipixel; short *a, dummy; if (argc != 4) { fprintf(stderr,"usage: imgdiff where z = y - x are img.7.2 files.\n"); exit(-1); } fp1 = fopen(argv[1], "r"); fp2 = fopen(argv[2], "r"); fp3 = fopen(argv[3], "w"); npixels = NXIMG*(NYIMG/NCHUNK); if ( (a = (short *)malloc(2*npixels)) == NULL) { fprintf(stderr,"imgdiff: ERROR. Cannot allocate an array of %d bytes.\n", 2*npixels); exit(-1); } for (ichunk = 0; ichunk < NCHUNK; ichunk++) { if ( (fread((char *)a, 2, npixels, fp1)) != npixels) { fprintf(stderr,"imgdiff: ERROR reading ichunk %d from %s\n", ichunk, argv[1]); exit(-1); } for (ipixel = 0; ipixel < npixels; ipixel++) { if ( (fread((char *)&dummy, 2, 1, fp2)) != 1) { fprintf(stderr,"imgdiff: ERROR reading from %s\n", argv[2]); exit(-1); } a[ipixel] = dummy - a[ipixel]; } if ( (fwrite((char *)a, 2, npixels, fp3)) != npixels) { fprintf(stderr,"imgdiff: ERROR writing ichunk %d to %s\n", ichunk, argv[3]); exit(-1); } } free((char *)a); fclose(fp1); fclose(fp2); fclose(fp3); exit(0); }