Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Artículos > Bases de datos > MySQL > Guardar y extraer imágenes en MySQL
-Artículos

Guardar y extraer imágenes en MySQL

1 . Introducción
    1.1 . Requerimientos
    1.2 . Creación de Base de datos y Tabla
    1.3 . Conectarnos a la BD
2 . Almacenar imagen en la BD
3 . Extraer la imagen de la BD y mostrarla en el navegador

En este artículo vamos a tratar lo que es el almacenar imágenes en una Base de Datos, para lo que utilizaremos MySQL.

Introducción

¿Quien se podría imaginar el guardar imágenes en una Base de Datos? Al principio ni me pasaba por la cabeza, hasta que ya vas conociedo las herramientas y con el tiempo surgen nuevas ideas y surge la inquietud. ¿Se podrán guardar imágenes en una Base de Datos? La respuesta es que sí.

Requerimientos

  • PHP >= 3.0.16
  • MySQL
  • Habilitar la extension en PHP sobre GD

Creación de Base de datos y Tabla

Vamos a comenzar creando una Base de Datos, en nuestro caso se llama bd_banners y dentro de esta creamos una tabla (en nuestro caso se llama tbl_Banner) con los campos;

  • Id_banner (Llave, autonumérico)
  • Nombre (Texto)
  • Descripcion (Texto)
  • Imagen (Blob)

Conectarnos a la BD

Ahora simplemente nos conectamos a MySQL y seleccionamos nuestra Base de Datos bd_banners.

$link = mysql_connect('localhost', 'root', 'password');
if (!$link)
   die('Error al conectarse con MySQL: ' . mysql_error().' <br>Número del error: '.mysql_errno());
if (! @mysql_select_db("db_AdMX",$link)){
   echo "No se pudo conectar correctamente con la Base de datos";
   exit();
}

Almacenar imagen en la BD

Antes de almacenar la imágen en la BD, debemos de procesarla para llegar a convertirla en datos binarios.

$image = imagecreatefromgif('imagen.gif');
ob_start();
imagegif($image);
$jpg = ob_get_contents();
ob_end_clean();
imagecreatefromgif
Crear una nueva imagen a partir de un archivo o URL.
ob_start
Inicia el almacenamiento en el búfer de salida.
imagegif
Producir la salida de una imagen al navegador o a un archivo.
ob_get_contents
Devolver el contenido del búfer de salida.
ob_end_clean
Limpia el búfer de salida y termina el almacenamiento en el búfer de salida.

NOTA: En este ejemplo se guarda una imagen tipo GIF, por eso se utilizan las funciones imagecreateformgif e imagegif. Si se desea almacenar una imágen tipo JPEG, hay que utilizar las funciones imagecreatefromjpeg e imagejpeg. Asi solamente se cambia el tipo de imagen en las funciones. Para ver los tipos de imágenes que soporta PHP+GD pulsa aquí.

Ahora sí que vamos a almacenarla; para esto convertimos la información de la imagen en sql-safe y simplemente hacemos una consulta para guardarla.

$jpg = str_replace('##','\#\#',mysql_escape_string($jpg));
$result = mysql_query("INSERT INTO tbl_Banner SET Imagen='$jpg'");

Extraer la imagen de la BD y mostrarla en el navegador

Ahora vamos a extraer la imagen mediante un simple SELECT y la vamos a mostrar en el navegador.

$result = mysql_query("SELECT Imagen FROM tbl_Banner WHERE Id_imagen=11");
$result_array = mysql_fetch_array($result);
header("Content-Type: image/gif");
echo $result_array[0];

Simplemente con esto guardamos la imágen en una variable y antes de mostrarla le decimos al navegador que el contenido a mostrar es una imagen GIF. Si se va a mostrar imágenes JPEG hay que cambiar image/gif por image/jpeg y asi para los diferentes formatos.

 

Últimos comentarios
Últimos 5 comentarios

Imágenes y texto (14/11/2009)

Por
Buenos días.
Es posible crear una página que muestre imágenes de una base de datos y texto al mismo tiempo?.
Estoy intentando hacer uná página de una inmobiliaria y me gustaría descargar las fotos de las casas con su descripción. Gracias

Por favor! (13/10/2009)

Por
Ay Arturito, este foro es dedicado a bases de datos, y se agradece mucho este aporte porque hay gente que necesita hacerlo en PHP, asi que por favor yo te pido respeto a ti para el autor de este artículo, y si no te gusta, hay miles de foros donde mas buscar tu tareita pedorra en java. Saludos

COMENTARIO (29/09/2009)

Por
COMENTARIO

php mysql| (20/07/2009)

Por
tengo un problemita ya pude guardar la imagen en la base y mostrarla en el un URL pero ahora lo que me urge es poder guardar la imagen en un fichero ya que las imagenes originales ya no las tengo y necesito descrgar las contenidas enm la base de datos

Guardar desde un Combo (19/06/2009)

Por
Cuando quiero guardar un valor desde un combo en mi base de datos, solo me guarda la primer palabra, despues del espacio no guarda nada.
Ejemplo en el combo tengo
alambre calibre 16.
y cuando genero la cosulta y guardo los datos en mi tabla
solo me aparece alambre la primer palabra.
Alguna idea???
 
Tienda
Patrocinados
 

Copyright © 1999-2010 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

diseño y desarrollo web por Color Vivo Internet. Un proyecto de los Hermanos Carrero