#include #include #include #include #include "error.h" void version(void) { printf("ppminfo v" VERSION ", (C) 2007 by folkert@vanheusden.com\n\n"); } void help(void) { version(); printf("-f file ppm-file to analyse\n"); printf("-v be even more verbose (multiple (max 3) for more details)\n"); printf("-V print version and exit\n"); printf("-h this help\n"); } int main(int argc, char *argv[]) { int cols, rows, format; pixval maxval = 0; FILE *fh = stdin; int verbose = 0; int c; char *file = NULL; while((c = getopt(argc, argv, "f:vVh")) != -1) { switch(c) { case 'f': file = optarg; break; case 'v': verbose++; break; case 'V': version(); return 0; case 'h': help(); return 0; default: help(); return 1; } } if (file) fh = fopen(file, "rb"); if (!fh) error_exit("Failed to open file!\n"); ppm_readppminit(fh, &cols, &rows, &maxval, &format); printf("Resolution: %dx%d\n", cols, rows); printf("Maximum value: %d\n", maxval); if (verbose >= 1) printf("Format: %d\n", format); if (verbose >= 2) { int minr = maxval, maxr = 0; long int avgr = 0, stddevr = 0; int ming = maxval, maxg = 0; long int avgg = 0, stddevg = 0; int minb = maxval, maxb = 0; long int avgb = 0, stddevb = 0; int x, y, npixels = rows * cols; pixel *row = (pixel *)malloc(sizeof(pixel) * cols); for(y=0; y