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; }
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; }