#include "config.h" #include "common.h" #include #include #include #include int main(int argc, char *argv[]) { char *srcname = NULL, *dstname = NULL; pipi_image_t *img, *newimg; if(argc < 3) { fprintf(stderr, "%s: too few arguments\n", argv[0]); fprintf(stderr, "Usage: %s \n", argv[0]); fprintf(stderr, "Where is one of:\n"); fprintf(stderr, " 1 random dithering\n"); fprintf(stderr, " 2 Floyd-Steinberg (raster)\n"); fprintf(stderr, " 3 Floyd-Steinberg (serpentine)\n"); fprintf(stderr, " 4 Ostromoukhov (raster)\n"); fprintf(stderr, " 5 Ostromoukhov (serpentine)\n"); fprintf(stderr, " 6 Direct binary search\n"); return EXIT_FAILURE; } srcname = argv[1]; dstname = argv[3]; img = pipi_load(srcname); switch(atoi(argv[2])) { case 7: newimg = pipi_dither_dbs(img); break; case 6: newimg = pipi_dither_ostromoukhov(img, PIPI_SCAN_SERPENTINE); break; case 5: newimg = pipi_dither_ostromoukhov(img, PIPI_SCAN_RASTER); break; case 4: newimg = pipi_dither_floydsteinberg(img, PIPI_SCAN_SERPENTINE); break; case 3: newimg = pipi_dither_floydsteinberg(img, PIPI_SCAN_RASTER); break; case 2: newimg = pipi_dither_ordered(img); break; case 1: default: newimg = pipi_dither_random(img); break; } pipi_free(img); pipi_save(newimg, dstname); pipi_free(newimg); return 0; }