void Imagen::copia(Imagen & imagen){
		if(datos==NULL)
			destruir();
		nfilas = imagen.filas();
		ncolumnas = imagen.columnas();
		datos = new byte*[nfilas];
		datos[0]=new byte[nfilas*ncolumnas];
		for (int i=1; i < nfilas; i++){
			datos[i] = datos[i-1] + ncolumnas;
		} 
		for(int i=0;i<nfilas;i++)
			for(int j=0;j<ncolumnas;j++)
				datos[i][j]=imagen.get(i,j);
	}
Example #2
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;
}
Example #3
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", true)){
		// 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
	destino.crear(40,90);
	for (int i=0; i < destino.filas(); i++)
		for (int j=0; j < destino.columnas(); j++)
			destino.set(i, j, origen.get(i+110,j+100));
		
	// Guardar la imagen destino en el fichero trozo.pgm
	if (destino.escribirImagen("trozo.pgm", true)){
		// 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;
}