Publicidad:
La Coctelera

Sergio.Iglesias - Diseño y desarrollo web

recursos sobre diseño web con estándares, programación web, usabilidad, accesibilidad...

26 Octubre 2006

Mostrar una imagen desde blob mysql usando PHP

Para que el script se muestre como una imagen necesitamos usar la cabecera Content-type y poner el tipo MIME de la imagen que recuperaremos de la tabla, esto es:

php:

Donde image/gif es el el tipo MIME para una imagen GIF.

Desarrollo del Script

Las imágenes han sido guardadas en la tabla y tienen un único identificador representado por el campo idfoto, la imagen original se guarda en el campo foto, la miniatura en el campo thumb y el tipo MIME en el campo mime, como podemos ver en la estructura de la tabla:

sql:
CREATE TABLE `tabla` (
 
   `idfoto` int(3) NOT NULL AUTO_INCREMENT,
   `nombre` varchar(255) NOT NULL DEFAULT '',
   `foto` blob NOT NULL,
   `thumb` blob NOT NULL,
   `mime` varchar(40) NOT NULL DEFAULT '',
   PRIMARY KEY  (`idfoto`)
 
 ) ;

Necesitamos enviar parámetros al script para indicarle el id de la imagen que queremos ver, y también si queremos ver la imagen original o su miniatura, suponiendo que el archivo que contiene al script se llame verblob.php:

html:

Donde el parámetro idfoto indica el id de la imagen, y el parametro tam indica si va a mostrar la imagen original o la miniatura (1 para mostrar la imagen original y 2 para mostrar la miniatura). El script trabaja de la siguiente manera:

php:
// Parámetros para recuperar la imagen
 # Recuperamos el parámetro GET con el id único de la foto que queremos mostrar
 
 $idfoto = (isset($_GET["idfoto"])) ? $_GET["idfoto"] : exit();
 # Recuperamos el parámetro GET para elegir entre la miniatura o la foto real
 
 $tam = (isset($_GET["tam"])) ? $_GET["tam"] : 1;
 // Escojemos la foto real o la miniatura según la variable $tam
 
 switch($tam) {
 	case "1":
 		$campo = "foto";break;;
 	case "2":
 		$campo = "thumb";break;;
 	default:
 		$campo = "foto";break;;
 
 }

Ya sabiendo el id de la imagen que vamos a mostrar, hacemos la consulta a la base de datos:

php:
// Recuperamos la foto de la tabla
 $sql = "SELECT $campo, mime
 		FROM tabla 
 		WHERE idfoto = $idfoto";
 # Conexión a la base de datos
 $link = mysql_connect(DBHOST, DBUSER, DBPASSWORD) or die(mysql_error($link));;
 
 mysql_select_db(DBNAME, $link) or die(mysql_error($link));
 $conn = mysql_query($sql, $link) or die(mysql_error($link));
 
 $datos = mysql_fetch_array($conn);
 // La imagen
 $imagen = $datos[0];
 // El mime type de la imagen
 $mime = $datos[1];
 
 // Gracias a esta cabecera, podemos ver la imagen 
 // que acabamos de recuperar del campo blob
 header("Content-Type: $mime");
 // Muestra la imagen
 echo $imagen;

Conclusiones

Los campos blob no solo nos permiten guardar imágenes, sino una gran variedad de datos, para mostrarlos solo hay que tener en cuenta el tipo MIME del archivo que hemos guardado, y al momento de recuperarlo sólamente utilizamos header con el Content-Type.

Elementos Utilizados

Referencias

Autor

Braulio Andrés Soncco Pimentel

Programador - Diseñador

braulio at buayacorp.com

servido por Sergio 3 comentarios compártelo

3 comentarios · Escribe aquí tu comentario

henry

henry dijo

fola soy henry, amigo la verdad q estoy dando los primeros pasos para aprender php y quisiera q me ayudes para ir paso a paso y deseo desarrollar mi web con entorno de base de datos chaoo.
espero tu ayuda

14 Junio 2009 | 02:17 AM

henry

henry dijo

hola amigo te lo agradecere si me puedes tambien conectar con expertos en php y mysql para q me puedan ayudar a conocer este leguaje orientado al desarrollo web ...

14 Junio 2009 | 02:21 AM

Escribe tu comentario


Sobre mí

Avatar de Sergio

Sergio.Iglesias - Diseño y desarrollo web

Fuentesaúco, España
ver perfil »
contacto »
Mi nombre es Sergio Iglesias. Trabajo como diseñador y desarrollador web.

Fotos

Sergio Iglesias todavía no ha subido ninguna foto.

¡Anímale a hacerlo!

Buscar

suscríbete

Selecciona el agregador que utilices para suscribirte a este blog (también puedes obtener la URL de los feeds):

¿Qué es esto?

Crea tu blog gratis en La Coctelera