<?php ////////////////////////////////////////////////////////////////////////// // // // Rafael Páez - @fikih888 // // LSB avanzado - Least Significant Bit (2/2) // // Script que permite obtener una imagen bicolor oculta en otra // // mediante la técnica LSB // // // ////////////////////////////////////////////////////////////////////////// if($argc!=4) { echo "\n Modo de empleo: obtener.php imagen_original imagen_portadora imagen_resultante\n\n"; } else { //Obtenemos los argumentos $nombre_original=$argv[1]; $nombre_portadora=$argv[2]; $nombre_salida=$argv[3]; echo "\n Procesando........\n"; ///////////////////// // Procedemos a obtener la imagen //cargamos imagen original y la portadora $archivo_imagen_original=imagecreatefrompng("$nombre_original"); $archivo_imagen_portadora=imagecreatefrompng("$nombre_portadora"); //comprobamos tamanyo imagenes $xmax_original=imagesx($archivo_imagen_original); $ymax_original=imagesy($archivo_imagen_original); $xmax_portadora=imagesx($archivo_imagen_portadora); $ymax_portadora=imagesy($archivo_imagen_portadora); if($xmax_portadora != $xmax_original || $ymax_portadora != $ymax_original) { echo "\n Error! Las dimensiones de las imagenes no son iguales.\n"; echo "Dimensiones imagen original: $xmax_original x $ymax_original \n"; echo "Dimensiones imagen portadora: $xmax_portadora x $ymax_portadora \n"; } else { echo " Obteniendo.........\n"; $imagen_nueva=ImageCreatetruecolor($xmax_portadora, $ymax_portadora); //Recorremos todos los pixeles de la imagen portadora for($y=0;$y<$ymax_original;$y++) { for($x=0;$x<$xmax_original;$x++) { //Obtenemos el color rgb de la imagen original $rgb_original=imagecolorat($archivo_imagen_original, $x, $y); //Obtenemos el color rgb de la imagen portadora $rgb_portadora=imagecolorat($archivo_imagen_portadora, $x, $y); // si se ha modificado --> pintar de negro if($rgb_original != $rgb_portadora) { Imagesetpixel($imagen_nueva,$x,$y,0x000000); } else //sino --> pintar de blanco { Imagesetpixel($imagen_nueva,$x,$y,0xFFFFFF); } } } //Creamos la imagen ImagePng($imagen_nueva,$nombre_salida); ImageDestroy($imagen_nueva); ImageDestroy($archivo_imagen_original); ImageDestroy($archivo_imagen_portadora); echo "\n Imagen obtenida correctamente! :)\n\n"; } } ?>