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:
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:
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
:
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:
// 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:
// 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

Estuve intentando hacer algo parecido y en local todo muy bien pero al subirlo al servidor ni veo las miniaturas ni la imagen. Os dejo el código por si se os ocurreo algo.
La imagen la muestro así
echo "";
Y verimagen.php :
alert (\"entra\"); ";
// 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
include "conexion.php";
include("mainfile.php");
$sql = "SELECT thumb,tipo FROM imagenes WHERE idfoto=$idfoto";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$image = $row[0];
$tipo = $row[1];
Header("Content-type: $tipo");
echo($image);
?>
Y ampliarimagen.php
sql_query($sql);
$row = $db->sql_fetchrow($result);
$image = $row[0];
$tipo = $row[1];
Header("Content-type: $tipo");
echo($image);
?>
Y no me funciona me muestra numeros y letras,,...el problema típico miré y rebusqué cientos de soluciones en foros y no hay manera lo raro es que funciona en local, probé con rutas relativas, absolutas,....y se os ocurre algo??
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
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 ...