Almacenar imágenes en MySQL

Cómo almacenar imágenes en una base de datos es una pregunta que me hizo el amigo Nico hace unos días, y respondo en forma de post: sí, es posible, y dependiendo de la situación puede ser ventajoso (desde luego, no desde el punto de vista del rendimiento).
Realmente el proceso es bien sencillo: abrimos el archivo almacenándolo en una variable, que contiene datos indescifrables (puedes probar a abrir una imagen con un editor de textos); a continuación cambiamos la codificación de esta variable a base64, con lo que ya tenemos código perfectamente legible (que no entendible, pero esto no nos importa), y ahora solo tendremos que almacenar esta cadena de texto en la base de datos y ya habremos concluido la primera parte.

<?php
//abre el archivo y pasa la codificacion a base64
$archivo=base64_encode(file_get_contents("enigma.jpg"));
//se guarda la cadena de texto en la que se ha transformado la imagen
//en un archivo de texto perfectamente legible, ( ojo ocupa minimo un 20% mas en Kb)
file_put_contents("archivo_texto.txt",$archivo);

//abre de nuevo el archivo 
archivo=file_get_contents("archivo_texto.txt");
//revierte los cambios en una nueva imagen
file_put_contents("archivo_texto.jpg",base64_decode($archivo));
?>

La segunda parte consiste en mostrar los datos de esta imagen de nuevo por pantalla. La tarea es igualmente sencilla, existen varias maneras: la más rápida sería guardar la cadena descodificándola de base64 al estado anterior. También se podría hacer un echo de un base64_decode lanzando las header() de una imagen, o escribir la imagen embebida directamente en el HTML.

<img src="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAS...." />

0 comentarios sobre "Almacenar imágenes en MySQL"

Sé el primero en comentar.