Пример #1
0
int main() {
    Imagen origen;
    Imagen destino(150,200);

    // Crear un degradado en la imagen destino
    for (int i=0; i < destino.filas()*destino.columnas(); i++)
        destino.setPos(i, i%destino.columnas()+20);

    // Guardar la imagen destino en el fichero degradado.pgm
    if (destino.escribirImagen("degradado.pgm", false)) {
        // si todo va bien
        cout << "degradado.pgm guardado correctamente \n";
        cout << "usa: display degradado.pgm para ver el resultado\n";
    } else { // si error
        cerr << "Error guardando la imagen degradado.pgm\n";
        return 1;
    }

    // Leer la imagen lena.pgm
    if (!origen.leerImagen("imagenes/lena.pgm")) {
        cerr << "error leyendo imagenes/lena.pgm\n";
        return 1;
    }

    // Recortar un trozo de la imagen origen
    Imagen aux(40,90);
    Imagen salida (aux); //Llamamos al operador de asignacion
    for (int i=0; i < salida.filas(); i++)
        for (int j=0; j < salida.columnas(); j++)
            salida.set(i, j, origen.get((i+110)%origen.filas(),(j+100)%origen.columnas()));
    //Hemos aplicado un filtro de modulo para que no intente leear fuera del vector de datos
    // Guardar la imagen salida en el fichero trozo.pgm
    if (salida.escribirImagen("trozo.pgm", false)) {
        // si todo va bien
        cout << "trozo.pgm guardado correctamente \n";
        cout << "usa: display trozo.pgm para ver el resultado\n";
    } else { // si error
        cerr << "Error guardando la imagen trozo.pgm\n";
        return 1;
    }
    return 0;
}
Пример #2
0
int main(int argc, char *argv[]){

        if(argc != 5){
            cerr << "Error en el uso: ./suma <img1>.pgm <img2>.pgm <img_resultado>.pgm (t)exto/(b)inario" << endl;
            exit(-1);
        }

        Imagen primera, segunda;
        char nombre[100];
        bool es_binario;

        if(*argv[4]=='t')
            es_binario=false;
        else if(*argv[4]=='b')
            es_binario=true;
        else{
            cerr << "Formato de salida desconocido..." << endl;
            exit(-1);
        }
        strcpy(nombre, argv[1]);
        if(!primera.leerImagen(nombre)){
            cerr << "Error leyendo la primera imagen..." << endl;
            exit(-1);
        }
        strcpy(nombre, argv[2]);
        if(!segunda.leerImagen(nombre)){
            cerr << "Error leyendo la segunda imagen..." << endl;
            exit(-1);
        }

        //Si llegamos hasta aqui, no ha habido errores de lectura
        Imagen resultado = primera+segunda;
        strcpy(nombre, argv[3]);
        if(!resultado.escribirImagen(nombre, es_binario)){
            cerr << "Error al escribir en imagen de destino..." << endl;
            exit(-1);
        }else
            cout << "\nConcatenacion realizada. Comprueba el fichero de salida." << endl;

        return 0;
}