- #include "config.h"
- #include "common.h"
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include <pipi.h>
-
- 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 <src> <method> <dest>\n", argv[0]);
- fprintf(stderr, "Where <method> is one of:\n");
- fprintf(stderr, " 1 Floyd-Steinberg (raster)\n");
- fprintf(stderr, " 2 Floyd-Steinberg (serpentine)\n");
- fprintf(stderr, " 3 Ostromoukhov (raster)\n");
- fprintf(stderr, " 4 Ostromoukhov (serpentine)\n");
- fprintf(stderr, " 5 Direct binary search\n");
- return EXIT_FAILURE;
- }
-
- srcname = argv[1];
- dstname = argv[3];
-
- img = pipi_load(srcname);
-
- switch(atoi(argv[2]))
- {
- case 5:
- newimg = pipi_dbs(img); break;
- case 4:
- newimg = pipi_ostromoukhov(img, PIPI_SCAN_SERPENTINE); break;
- case 3:
- newimg = pipi_ostromoukhov(img, PIPI_SCAN_RASTER); break;
- case 2:
- newimg = pipi_floydsteinberg(img, PIPI_SCAN_SERPENTINE); break;
- case 1:
- default:
- newimg = pipi_floydsteinberg(img, PIPI_SCAN_RASTER); break;
- }
-
- pipi_free(img);
-
- pipi_save(newimg, dstname);
- pipi_free(newimg);
-
- return 0;
- }
-
|