Convertir cadenas de texto en imágenes con PHP
Hoy os traigo un script en PHP que puede resultar muy útil incluso para ocultar determinados contenidos como puede ser un email a las arañas, por poneros un ejemplo, todos sabemos que si ponemos un email en el código HTML a los pocos días recibiremos comenzaremos a recibir spam, si lo ponemos como una imagen conseguiremos medianamente evadirlo.
Para generar una imagen automática con PHP con el texto que a nosotros nos interese echaremos mano de imagecreate(), imagecolorallocate() e imagestring().
En el ejemplo que os pongo a continuación le paso a imagenemail.php el valor de dominio y usuario que serían los dos datos necesarios para un email, podéis substituir esto por cualquier otro texto y cambiando el valor de la variable $mail, el proceso para convertir el texto en imagen sería el siguiente:
/* Prueba Linwind para convertir un email en una imagen Ejemplo de uso: imagenemail.php?dominio=dominio.com&usuario=usuario */ if( !isset($_GET['usuario']) || !isset($_GET['dominio']) ) // Comprobamos que tenemos todos los datos die('El email es incorrecto.'); $email = $_GET['usuario'].'@'.$_GET['dominio']; //Guardamos el eMail en la variable eMail $ancho = (strlen($email)*6)+1; //Calculamos el ancho de la imagen $imagen = imagecreate($ancho, 14) or die('Cannot initialize new GD image stream'); $white = imagecolorallocate($imagen, 255, 255, 255); $black = imagecolorallocate($imagen, 0, 0, 0); // Creamos la imagen imagestring($imagen, 2, 1, 0, $email, $black); //Escribimos el eMail en la imagen header('Content-type: image/png'); //Cabecera imagepng($imagen); //Imagen imagedestroy($imagen); |
Esto lo guardaríamos en un fichero imagenemail.php y lo llamaríamos de la siguiente forma imagenemail.php?usuario=usuario&dominio=dominio.com un ejemplo del resultado sería este:
Puedes descargar el código de generar imágenes con email desde el siguiente enlace: imagenemail.zip
gracias man!!!
me salvó tu código, ya hice un captcha personalizado 😀
se podria hacer una imagen con varias lineas de texto?
gracias.