int main(int argc, char *argv[]){
	Permutacion perm;
	Imagen img;	
	
	if(argc==4 || argc==5){
		if(argc==4){
			if(perm.Leer_Permuta(argv[2])){
				if(img.LeerImagen(argv[1])){
					if(perm.Get_n() == img.Filas()){
						for(int i=0; i<img.Filas(); i++)			
							img.Asignar_A_Fila(i,perm.Get_Elem(i));
              
						if(img.EscribirImagen(argv[3]))
							cout << "\n Imagen guardada correctamente." << endl;
						else
							cout << "\n ERROR: No se pudo guardar la imagen en disco." << endl;						
					}else
						cout << "\n ERROR: El nº de líneas de la imagen no coincide con el del fichero de permutaciones." << endl;
				}else
					cout << "\n ERROR: No se pudo leer la imagen desde disco." << endl;
			}else
				cout << "\n ERROR: No se pudo leer la permutación desde disco." << endl;
		}
		if(argc==5){
			if(strcmp(argv[1],"-d")==0){
				if(perm.Leer_Permuta(argv[3])){
					if(img.LeerImagen(argv[2])){
						if(perm.Get_n() == img.Filas()){
							for(int i=0; i<img.Filas(); i++)
								img.Asignar_A_Fila(perm.Get_Elem(i),i);

							if(img.EscribirImagen(argv[4]))
								cout << "\n Imagen guardada correctamente." << endl;
							else
								cout << "\n ERROR: No se pudo guardar la imagen en disco." << endl;						
						}else
							cout << "\n ERROR: El nº de líneas de la imagen no coincide con el del fichero de permutaciones." << endl;
					}else
						cout << "\n ERROR: No se pudo leer la imagen desde disco." << endl;
				}else
					cout << "\n ERROR: No se pudo leer la permutación desde disco." << endl;
			}else
				cout << "\n ERROR: No se detectó el parámetro -d." << endl;
		}			

	}else{
		cout << "\n ERROR. Número de parámetros incorrecto." << endl;
		cout << " USO:" << endl;
		cout << " Aplicar permutación: "  << argv[0] << " [imagen.pgm] [permutacion.per] [imagen_permutada.pgm]" << endl;
		cout << " Deshacer permutación: " << argv[0] << " -d [imagen_permutada.pgm] [permutacion.per] [imagen.pgm]" << endl;		
	}
	return 0;
}
Beispiel #2
0
int main(int argc,const  char * argv[])
{
	 if(argc != 3) 
   {
      cout << "Error en el número de argumentos" << endl;
      cout << "Forma de ejecución: " << endl;
      cout << "ocultar lenna.pgm salida.pgm < mensaje.txt" << endl;
    }
   else
   {
      TipoImagen imag;
      int filas, columnas, Tamimagen;
      bool resultado,lectura;
      imag = LeerTipoImagen(argv[1],filas,columnas);
      Imagen img;
      char c;
      if(imag == IMG_PGM)
         {
           img.LeerImagen(argv[1]);
           const int MAXMSG = (img.Filas()*img.Columnas()) / 8;
           char cad[MAXMSG];
           unsigned char vec_aux[img.Filas()*img.Columnas()];
           for(int i = 0; i < MAXMSG && cin.get(c);i++)
           {
            cad[i] = c;
           }
	         
           Tamimagen = img.Filas()*img.Columnas();
           for(int i=0; i<img.Filas(); i++){
               for (int j=0; j<img.Columnas(); j++){
                     vec_aux[i*img.Columnas()+j] = img.Get(i,j);
                   }
                  }
           resultado = Ocultar(vec_aux,cad,Tamimagen);
           for(int i=0; i<img.Filas(); i++){
               for (int j=0; j<img.Columnas(); j++){
                   img.Set(i,j, vec_aux[i*img.Columnas()+j]);
                 }
               }
           resultado = img.EscribirImagen(argv[2]);
           
           if(resultado == true)
		         {
			           cout << "La frase ha sido ocultada " << endl;
		         }
           else
           {
                 cout << "La imagen no ha sido ocultada" << endl;
           }
         }
           else
           {
            cout << "El formato de la imagen es el incorrecto, debe ser PGM" << endl;
           }
          
    }
}