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