Agregar texto a imagen con PHP

En este tutorial sobre imágenes y PHP te mostraré cómo agregar una capa de texto a una imagen, usando cualquier fuente.

Es decir, puedes descargar cualquier fuente o tipografía desde Google fonts (o lugares similares) y usarla para colocar texto en una imagen usando PHP.

Voy a mostrarte varios ejemplos, entre ellos uno para agregar dos líneas de texto. Por cierto, recuerda que necesitas la librería GD habilitada. Yo he probado esto con Windows y Linux, en ambos lugares funciona de maravilla.

Formatos PNG y JPG

Quiero dejar claro que en este ejemplo vamos a trabajar con una imagen PNG y para ello vamos a usar las funciones imagecreatefrompngimagepng.

Si tú usas JPG/JPEG, no hay problema, pero cambia los encabezados que veremos, y las funciones; por ejemplo, el equivalente de imagecreatefrompng para JPG es imagecreatefromjpeg y lo mismo para imagepng.

Colocar texto sobre imagen usando PHP

Colocar texto en imagen con PHP

Comenzamos definiendo la ruta absoluta de la fuente TTF. Como lo dije, puedes usar Google fonts o similares para descargar fuentes. Es importante que la ruta sea absoluta.

También definimos la ruta de la imagen que vamos a modificar, en este caso no es necesario que sea absoluta.

Yo voy a usar la fuente llamada sansita.ttf que está en el mismo directorio que el script. Después de eso, creamos un recurso a partir de la imagen con imagecreatefrompng. Definimos el color del texto, así como su tamaño, ángulo, posición en X y posición en Y.

Sobre el ángulo basta saber que un ángulo de 0 hace el texto de izquierda a derecha en horizontal; y uno de 90 haría que el texto vaya de arriba hacia abajo.

Por cierto, para crear el color usamos imagecolorallocate. Los últimos 3 argumentos son los niveles de Rojo, Verde y Azul para el color. Como el texto será negro, los valores son 0 para los 3 casos. Si quisieras un color blanco podrías especificar 255 para los 3 colores.

Finalmente colocamos el texto usando la función imagettftext pasando todos los argumentos mencionados anteriormente. Más tarde, enviamos un encabezado para mostrar la imagen en el navegador.

Lo que hace que la imagen sea mostrada es la función imagepng; más adelante te mostraré unos ejemplos para forzar la descarga de la imagen y para guardar la imagen en el disco duro.

El código completo queda así:

Por cierto, imagedestroy es para liberar los recursos usados. Al ejecutar el script, la imagen resultante es la que está bajo el encabezado de esta sección. A partir de ahora te mostraré varios ejemplos para colocar texto sobre imágenes usando PHP, pero omitiré estos detalles.

Forzar descarga de imagen

Esto no tiene que ver con el texto sobre la imagen, sino sobre encabezados y todo eso. En caso de que no quieras mostrar la imagen y en su lugar quieras forzar su descarga, puedes hacer lo siguiente:

En este caso con encabezados logramos todo. Si quieres el código completo lo dejaré en un repositorio al final del post.

Guardar imagen con texto en almacenamiento

Si quieres colocar texto sobre una imagen existente en PHP y quieres guardar el resultado, simplemente pasa un segundo argumento a imagepng (o imagejpeg) con la ruta de salida.

Ahora la imagen se va a guardar en el disco duro según la ruta indicada en $salida.

Ejemplo final: dos líneas de texto

Si no te basta con una línea de texto para colocar sobre la imagen usando PHP, aquí te traigo otro ejemplo. Puedes invocar a imagettftext cuantas veces quieras, con cualquier texto y coordenadas.

Para este caso he creado un formulario simple:

Al procesar simplemente recuperamos las dos líneas de texto y lo colocamos. El truco está en cambiar la coordenada en Y para que la segunda línea quede bajo la primera.

Por cierto, en este caso la imagen se muestra directamente en el navegador, pero puedes aplicar los métodos mostrados anteriormente para forzar su descarga o guardar el resultado en el almacenamiento del servidor.

Poniendo todo junto

Si te gusta más la explicación en vídeo, aquí te dejo el tutorial:

El código completo con todos los ejemplos, incluyendo la imagen y la fuente TTF lo encuentras en mi GitHub.

Si te gusta PHP, te invito a leer más sobre este lenguaje.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Agregar texto a imagen con PHP”

Dejar un comentario