Esempio n. 1
0
int handle_decode_arguments(char **argv, Images &images, int quality, int scale) {

    char *ext = strrchr(argv[1],'.');
    if (!check_compatible_extension(ext)) {
        e_printf("Error: expected \".png\", \".pnm\" or \".pam\" file name extension for output file\n");
        return 1;
    }

    FILE *file = fopen(argv[0],"rb");
    if(!file)
        return 1;
    FileIO fio(file, argv[0]);

    if (!flif_decode(fio, images, quality, scale)) return 3;
    if (scale>1)
        v_printf(3,"Downscaling output: %ux%u -> %ux%u\n",images[0].cols(),images[0].rows(),images[0].cols()/scale,images[0].rows()/scale);
    if (images.size() == 1) {
        if (!images[0].save(argv[1],scale)) return 2;
    } else {
        int counter=0;
        std::vector<char> vfilename(strlen(argv[1])+6);
        char *filename = &vfilename[0];
        strcpy(filename,argv[1]);
        char *a_ext = strrchr(filename,'.');
        for (Image& image : images) {
            sprintf(a_ext,"-%03d%s",counter++,ext);
            if (!image.save(filename,scale)) return 2;
            v_printf(2,"    (%i/%i)         \r",counter,(int)images.size()); v_printf(4,"\n");
        }
    }
    v_printf(2,"\n");
    return -1;
}
Esempio n. 2
0
bool decode_flif(char **argv, Images &images, flif_options &options) {
    FILE *file = NULL;
    if (!strcmp(argv[0],"-")) file = stdin;
    else file = fopen(argv[0],"rb");
    if(!file) return false;
    FileIO fio(file, (file==stdin ? "from standard input" : argv[0]));
    metadata_options md;
    md.icc = options.color_profile;
    md.xmp = options.metadata;
    md.exif = options.metadata;
    return flif_decode(fio, images, options, md);
}
Esempio n. 3
0
bool decode_flif(char **argv, Images &images, int quality, int scale, int resize_width, int resize_height) {
    FILE *file = fopen(argv[0],"rb");
    if(!file) return false;
    FileIO fio(file, argv[0]);
    return flif_decode(fio, images, quality, scale, resize_width, resize_height);
}