<?php
	///////////////////////////////////////////////////////////////////////////////////////////////
	//										 	     //
	//   Rafael Páez - @fikih888  								     //
	//   LSB - Least Significant Bit (2/3)							     //
	//   Script que permite comprobar si existe un fichero ocultado en una imagen mediante LSB   //
	//											     //
	///////////////////////////////////////////////////////////////////////////////////////////////

	if($argc!=4)
	{
		echo "\n  Modo de empleo: comprobar_lsb.php formato_salida[jpeg/png] imagen_portadora imagen_salida\n\n";
	}
	else
	{
		//Obtenemos los argumentos
		$tipo_imagen_salida=$argv[1];
		$nombre_portadora=$argv[2];
		$nombre_pixelada=$argv[3];

		if($tipo_imagen_salida != "jpeg" && $tipo_imagen_salida != "png")
		{
			echo "  El formato de la imagen de salida no es correcto! Especifica \"jpeg\" o \"png\".\n\n";
		}
		else
		{
			echo "\n  Procesando........\n";

			//Leemos la imagen de entrada
			$archivo_imagen=imagecreatefrompng("$nombre_portadora");

			$imagen_pixelada=ImageCreatetruecolor(imagesx($archivo_imagen),imagesy($archivo_imagen));

			//Recorremos todos los pixeles de la imagen portadora por filas
			for($y=0;$y < imagesy($archivo_imagen);$y++)
			{
				for($x=0;$x < imagesx($archivo_imagen);$x++)
				{
					//Obtenemos el color rgb del pixel
					$rgb=imagecolorat($archivo_imagen,$x,$y);

					//Si hay algun 1 pintamos de negro, sino, pintamos de blanco
					if(($rgb & 0x010101)==0x000000) //Quiere decir que los 3 bits menos significativos de los colores son 0s
					{			
						Imagesetpixel($imagen_pixelada,$x,$y,0xFFFFFF);
					}
					else
					{
						Imagesetpixel($imagen_pixelada,$x,$y,0);
					}
				}
			}

			//Creamos la imagen de salida
			if($tipo_imagen_salida == "jpeg")
			{
				ImageJpeg($imagen_pixelada,$nombre_pixelada);  
			}
			else
			{
				ImagePng($imagen_pixelada,$nombre_pixelada);  
			}

			ImageDestroy($imagen_pixelada);
			ImageDestroy($archivo_imagen);

			echo "\n  Imagen creada correctamente! :)\n\n";
		}
	}
?>