img2ascii con PHP

img2ascii es una una implementación en PHP de una función que te permitirá mostrar la representación de una imagen utilizando caracteres ASCII. Este ejemplo esta basado en el post realizado por Federico Javier Elgarte llamado Arte ASCII con PHP.

img2ascii.jpg

Convirtiendo imágenes a ASCII

Lo primero es obtener pixel a pixel el color de la imagen seleccionada, para ello utilizaremos la función imagecolorat el cual devuelve el color en formato RGB del pixel seleccionado.

[php]imagecolorat($imagen, x, y);[/php]

Luego al momento de generar el texto tenemos que pintarlo, como en html los colores se escriben en hexadecimal, necesitamos una función que convierta de RGB a Hexadecimal, esto lo hacemos de la forma:

[php]sprintf(“%06X”, $valor);[/php]

Luego uniendo estos puntos, recorremos todos los pixels de la imágenes y generamos nuestro primer ASCII como imagen.

[php]
$imagen = imagecreatefromjpeg(“imagen.jpg”);
print “

“;
for($y=0;$yx“;
}
print “
“;
}
print “

“;
imagedestroy($imagen);
[/php]

Se puede observar que hemos creado una cadena de texto con el caracter x y lo hemos pintado de acuerdo al color obtenido de la imagen, con lo cual obtenemos el siguiente resultado en arte-ascii.php.

Creando la función img2ascii
Basado en los ejemplo anterior creamos una función llamada img2ascii el cual recibirá dos parámetros: el primero es la ruta del archivo de imagen y el segundo es una cadena de texto que la utilizaremos para generar la imagen. Llamaremos a nuestro archivo img2ascii.php

[php]
// ——————————-
// img2ascii: convert img to ASCII
// ——————————-
function img2ascii($imagen, $palabra) {
$arrTxt = str2array($palabra);
$totTxt = count($arrTxt);
$k = 0;

$imgFile = imagecreatefromjpeg($imagen);
print “

“;
for($y=0; $y“.$arrTxt[$k].”“;
if ($totTxt > $actTxt) {
$actTxt+= 1;
} else {
$actTxt = 0;
}
}
print “
“;
}
print “

“;
imagedestroy($imgFile);
}
function str2array($str) {
$ret = array();
for ($i=0; $iimg.jpg en una cadena de texto utilizando la palabra unijimpe. Pueden ver el resultado de este ejemplo en ascii-demo.php que es el resultado de convertir img.jpg.

Finalmente para los que desean practicar mas con este ejemplo les dejo los archivos fuente de los ejemplos mostrados en este post.

Comentarios Total 3 comentarios


teba
Publicado: 17/10/2007 12:53 am

muy buenas, cada vez me sorprende aun mas este blog!!…

saludos y sigue asi, exelente.

txuki
Publicado: 27/10/2007 4:05 am

muy wapo el codigo este. Pero teneis un fallo :P

en la funcion dnd hay q cambair la variable $k, por $actTxt para que funcione correctamente. Un fallo tonto xd

Saludos

Walter
Publicado: 06/11/2007 1:47 am

Está muy bueno, pero.. ¿Hay alguna manera de que los usuarios que lo visiten puedan subir su propia imágen y hacerle ese proceso y no que solamente nosotros podamos subir la imágen? Estaria muy bueno, yo digo de hacer algo similar a los ejemplos de imagehosting, pero subir la imágen y que automaticamente haga el proceso.

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)