debugsql Jugando con PHP GD – Mexcoder

Jugando con PHP GD

Adaptacion del icono creado por KErosEnE
Adaptacion del icono creado por KErosEnE 

El otro día me encontraba trabajando en un sitio web, el cual requería que se insertaran varios placeholder para los banner de anuncios y dado que se requerían de diferentes tamaños pensé que seria divertido hacerlos dinámicamente con PHP en vez de hacer varias imágenes de diferentes tamaños y de hecho fue divertido solo encontré un problema ya que usando la función

imagestring

encontré el problema de que no es posible especificar un tamaño mas grande que el máximo permitido (5) lo cual en una imagen de 260 * 260 pixeles parecía mas bien hormigas en ves de texto.

En mi búsqueda de una solución y leyendo los comentarios de la misma función me encontré con una pequeña gema escrita hace ya 6 años, la curiosidad me gano y decidí probar el código y para mi agrado el resultado fue la imagen que aquí arriba se muestra.

Ya que la función desarrollada por Nicolas ‘KeksNicoh’ Heimann no permite mucha configuración mas allá de los parámetros que la función ofrece decidí hacer una clase que ademas de realizar el trabajo, ofrezca  principalmente modularidad y agregar algunas funciones ya que por ejemplo lo que hace la función es regresar el identificador del recurso para que puedas manejar lo a tu gusto, yo añadí ademas de esto, la posibilidad de con una sola llama de función o bien imprimirlo con sus correspondientes cabeceras como si se tratara de un archivo, o bien imprimir directamente un tag img de HTML con el contenido de la imagen inline, ambos con solo una llamada y sin escribir código extra.

y esta fue la clase resultante que esta albergada en github:

si bien puede verse demasiado mounstrosa y complicada es realmente muy simple de utilizar, por ejemplo para hacer la imagen que se muestra arriba en este post se utilisan unas cuantas lineas de codigo:

1
2
3
4
5
6
7
8
9
textImage::init( array (
  //define el texto que se usara en la imagen
  "chars" => 'I-dont-like-manga-...-Why-do-they-have-such-big-eyes? Strange-...-WHAT-WANT-YOU-DO?', 
  //define la escala que se usara, ya que en el tamaño original no se apreciarían los caracteres  
  "scale" => 6, 
  //ruta a la imagen la cual servirá de original para el proceso de conversion
  "source" => "http://upload.wikimedia.org/wikipedia/commons/b/be/Manga_Icon.png" ) ); 
 
echo textImage::getImgTag();

y ya esta eso es todo.

El parámetro sorce, no necesariamente debe ser una URL remota, puede ser una ruta interna a cualquier archivo del sistema local, por ejemplo mi foto de perfil si la guardamos como foto.png en el mismo directorio que el script podemos convertirla con las siguientes lineas de código:

1
2
3
4
5
6
7
8
9
textImage::init( array (
 "chars" => '**MEXCODER.COM',
 "scale" => 10,
 "weight" => 6 ) );
 
//los parámetros de esta función son:
//el texto alternativo, el titulo y el formato de la imagen; 
//y por ultimo la URL o URI donde se encuentra el archivo 
echo textImage::getIMGTag("","","png","./foto.png");

Considerando que este es el original

10247302_10200798967016608_5037699844911238942_n[1]

la salida seria esta:

se que a simple vista parece una que es solo una malla y que esta mas oscura pero eso es por el tamaño de la imagen, la imagen resultante mide 5370*7200, pesa alrededor de 10 Mb y pueden acceder a ella pulsando la vista previa(se abrirá en una nueva pestaña) y hacer zoom cuando su navegador la cargue para apreciar el detalle del texto, o bien descargarla y usar cualquier visor de fotografías.

Algunas las cosas que me quedan por hacer son escribir la documentación y arreglar algunos cuantos bugs en cuanto lo termine publicare un nuevo post con la documentación y aclarare cualquier duda que tengan y me dejen en los comentarios.