int main(int argc, char **argv) { FILE * ifP; struct cmdlineInfo cmdline; struct pam inpam, outpam; int eof; /* No more images in input stream */ pnm_init(&argc, argv); parseCommandLine(argc, argv, &cmdline); if (cmdline.simple || cmdline.local) ifP = pm_openr(cmdline.inputFileName); else ifP = pm_openr_seekable(cmdline.inputFileName); /* Threshold each image in the PAM file */ eof = FALSE; while (!eof) { pnm_readpaminit(ifP, &inpam, PAM_STRUCT_SIZE(tuple_type)); /* Set output image parameters for a bilevel image */ outpam.size = sizeof(outpam); outpam.len = PAM_STRUCT_SIZE(tuple_type); outpam.file = stdout; outpam.format = PAM_FORMAT; outpam.plainformat = 0; outpam.height = inpam.height; outpam.width = inpam.width; outpam.maxval = 1; outpam.bytes_per_sample = 1; if (inpam.depth > 1) { strcpy(outpam.tuple_type, "BLACKANDWHITE_ALPHA"); outpam.depth = 2; } else { strcpy(outpam.tuple_type, "BLACKANDWHITE"); outpam.depth = 1; } pnm_writepaminit(&outpam); /* Do the thresholding */ if (cmdline.simple) thresholdSimple(&inpam, &outpam, cmdline.threshold); else if (cmdline.local || cmdline.dual) thresholdLocal(&inpam, &outpam, cmdline); else thresholdIterative(&inpam, &outpam, cmdline.verbose); pnm_nextimage(ifP, &eof); } pm_close(ifP); return 0; }
int main(int argc, char *argv[]) { struct cmdlineInfo cmdline; const char * inputFileDescription; FILE* ifP; TIFF* tifP; bool eof; unsigned int imageSeq; pnm_init(&argc, argv); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr_seekable(cmdline.input_filespec); if (streq(cmdline.input_filespec, "-")) inputFileDescription = "Standard Input"; else inputFileDescription = cmdline.input_filespec; if (cmdline.append) validateReadableStdout(); createTiffGenerator(STDOUT_FILENO, "Standard Output", cmdline.append, &tifP); eof = FALSE; /* initial assumption */ imageSeq = 0; while (!eof) { bool success; if (cmdline.verbose) pm_message("Converting Image %u", imageSeq); pnm_nextimage(ifP, &eof); if (!eof) { if (imageSeq > 0) validateReadableStdout(); convertImage(ifP, tifP, inputFileDescription, cmdline); success = TIFFWriteDirectory(tifP); if (!success) pm_error("Unable to write TIFF image %u to file. " "tifWriteDirectory() failed.", imageSeq); ++imageSeq; } } destroyTiffGenerator(tifP); pm_close(ifP); return 0; }
int main(int argc, const char *argv[]) { struct cmdlineInfo cmdline; FILE * ifP; /* The program's regular input file. Could be a seekable copy of it in a temporary file. */ FILE * bdfP; /* The border file. NULL if none. */ int eof; /* no more images in input stream */ int beof; /* no more images in borderfile stream */ pm_proginit(&argc, argv); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr_seekable(cmdline.inputFilespec); if (cmdline.borderfile) bdfP = pm_openr(cmdline.borderfile); else bdfP = NULL; eof = beof = FALSE; while (!eof) { cropOneImage(cmdline, ifP, bdfP, stdout); pnm_nextimage(ifP, &eof); if (bdfP) { pnm_nextimage(bdfP, &beof); if (eof != beof) { if (!eof) pm_error("Input file has more images than border file."); else pm_error("Border file has more images than image file."); } } } pm_close(stdout); pm_close(ifP); if (bdfP) pm_close(bdfP); return 0; }
int main(int argc, char *argv[]) { struct cmdlineInfo cmdline; struct pam inpam; FILE * ifP; pm_filepos rasterpos; tuple backgroundColor; const unsigned char * const * pi; pnm_init(&argc, argv); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr_seekable(cmdline.inputFileName); pnm_readpaminit(ifP, &inpam, PAM_STRUCT_SIZE(tuple_type)); pm_tell2(ifP, &rasterpos, sizeof(rasterpos)); determineBackgroundColor(&inpam, cmdline.verbose, &backgroundColor); pm_seek2(ifP, &rasterpos, sizeof(rasterpos)); findBackgroundPixels(&inpam, backgroundColor, cmdline.verbose, &pi); writeOutput(&inpam, pi); destroyPi(pi, inpam.height); pm_close(ifP); pnm_freepamtuple(backgroundColor); return 0; }
int main(int argc, const char *argv[]) { CmdlineInfo cmdline; const char * inputFileDescription; FILE * ifP; TIFF * tifP; int ofd; int eof; unsigned int imageSeq; pm_proginit(&argc, argv); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr_seekable(cmdline.inputFileName); if (streq(cmdline.inputFileName, "-")) inputFileDescription = "Standard Input"; else inputFileDescription = cmdline.inputFileName; switch (cmdline.writeMethod) { case DIRECT_APPEND: createTiffGeneratorDirect(cmdline.output, MUST_EXIST, &tifP, &ofd); break; case DIRECT_CREATE: createTiffGeneratorDirect(cmdline.output, MAY_CREATE, &tifP, &ofd); break; case TMPFILE: createTiffGeneratorTmpfile(&tifP, &ofd); break; } eof = FALSE; /* initial assumption */ imageSeq = 0; while (!eof) { bool success; pnm_nextimage(ifP, &eof); if (!eof) { if (imageSeq > 0) validateReadableOutputFile(ofd); if (cmdline.verbose) pm_message("Converting Image %u", imageSeq); convertImage(ifP, tifP, inputFileDescription, cmdline); success = TIFFWriteDirectory(tifP); if (!success) pm_error("Unable to write TIFF image %u to file. " "tifWriteDirectory() failed.", imageSeq); ++imageSeq; } } destroyTiffGenerator(cmdline.writeMethod, tifP, ofd); pm_close(ifP); return 0; }