1. Guardar y extraer imágenes en 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.
2. 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.
3. Guardar y extraer imágenes en MySQL con PHP
En este artículo vamos a tratar lo que es el almacenar imágenes en una Base de Datos,
para este artículo vamos a utilizar MySQL.
Introducción
Quien se podría imaginar el guardar imágenes en una Base de Datos?, al principio a mi
ni me pasaba por la cabeza, hasta que ya vas conociedo las herramientas y con el tiempo
surgen nuevas ideas y fum!! buala!! seurge la inquietud, so podrán guardar imágenes
enuna Base de Datos?,la respuesta es si.
Requerimientos
• PHP >= 3.0.16
• MySQL
• Habilitar la extension en PHP sobre GD
Crear 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 seleccioanmso 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 imágen 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);
4. $jpg = ob_get_contents();
ob_end_clean();
imagecreatefromgif: Crear una nueva imagen a partir de un archivo o URL.
ob_start: Inica 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 imágen tipo GIF, por eso se utilizan las
funciones; imagecreateformgif, imagegif. Si se desea almacenar una imágen tipo JPEG,
utilizar las funciones; imagecreatefromjpeg, imagejpeg. Asi solamente se cambia el tipo
de imágen enlas funciones. Para ver los tipos de imágenes que soporta PHP+GD da
click aquí.
Ahora si vamos a almacenarla, para esto convertimos la infromación de la imágen en
sql-safe y simplemente hacemos un query para guardar.
$jpg = str_replace('##','##',mysql_escape_string($jpg));
$result = mysql_query("INSERT INTO tbl_Banner SET Imagen='$jpg'");
Extraer la imágen de la BD y mostrarla en el navegador
Ahora vamos a extraer la imágen 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 de imágen/gif. Se se va a mostrar
imágenes JPEG cambiar image/gif por image/jpeg y asi para los diferentes formatos.