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