Como devolver una imagen al «SRC» de un IMG con PHP

GD-Graphics-LibraryEn algunas ocasiones se necesita personalizar algún fichero de imágenes en nuestra web dependiendo de cualquier cosa, cambiar la foto del usuario, cambiar un logotipo, etc.

Lo fácil es poner en el propio «src» de la etiqueta «IMG» el código de php que cargue el nombre de la imagen que queremos cargar.

Algo parecido a esto:

<img src="<?php echo $nombre_de_la_imagen; ?>" width="256" height="200" />

Pero esto si tenemos muchas imagen a procesar seria un poco engorroso, sobre todo a la hora de actualizar.

Para evitar tener que duplicar código hay varios métodos, el más común seria crearnos una función en nuestro fichero de funciones globales,  pero rebuscando por google encontré otra solución que me pareció a lo menos curiosa.

Y esta es hacer que el propio fichero de php nos devuelva la imagen, no la ruta al fichero que contiene la imagen, sino la propia imagen. Una cosa como esto.

<img src="http://www.todavianose.com/imagen.php?fichero=4c86b5285ef7ca3bab" width="256" height="256" alt="Texto alternativo" longdesc="Descripcion larga" />

Una de las funciones que nos permite esto, es crear nuestro propio sistema de captcha, o crear una imagen de algún texto que no queramos que los robots que pululan por la red lo puedan indexar.

Para hacer esto lo que tenemos que hacer lo primero, es indicar que los datos que vamos ha devolver desde el fichero de php son una imagen, esto en php se hace con las siguientes funciones.

header("Content-type: tipo de mime");

Donde «tipo de mime» le indica el formato en el que le vamos ha enviar los datos, para imágenes lo tenemos que cambiar por:

  • image/jpeg: le indicamos que los datos que va ha recibir están en formato de iamgen jpeg.
  • image/png: los datos que le vamos ha enviar están en formato png.
  • image/gif: lo mismos pero en formato gif.

No solo podemos indicarle que lo que vamos ha enviar es una imagen, también podemos decirle que es otro tipo de archivo como por ejemplo un fichero pdf (application/pdf), un fichero de audio en formato mp3 (audio/x-mpeg-3), en esta pagina hay una lista con todos los tipo de mimes que podemos utilizar.

Y ya podemos enviar al «scr» el fichero de la imagen con el siguiente comando de php

readfile("ruta-al-archivo");

Utilizando la libreria GD, podemos crear nuestras propias imágenes, si quieres saber algo mas sobre estas funciones solo tienes que ver los comandos que hay disponibles.

Un ejemplo completo quedaría de la siguiente forma.

<?php
// Cargamos la imagen a mostrar
$archivo='usuario.png';
header("Content-type: image/png");
header("Content-length: ".filesize($archivo));
header("Content-Disposition: inline; filename=$archivo");
readfile($archivo);
// Fin crear imagen
?>

Y con esto estaría, si tienes alguna duda o sugerencia puedes dejar un comentario.