mameyugo;

, 0 comentarios, 2267 lecturas, por: Jose Manuel Muras Rodrigo

como almacenar imagenes en una base de datos, es una pregunta que me hizo el amigo nico hace unos dias, y respondo en forma de post, si, es posible, y depende la situacion puede ser ventajoso (desde luego, no desde el punto de vista del rendimiento).
realmente el proceso es bien sencillo, abrimos el archivo almacenandolo en una variable, que contiene datos indescifrables (puedes probar a abrir una imagen con un editor de textos), a continuacion cambiamos la codificacion de esta variable a base64, con lo que ya tenemos codigo perfectamente legible (que no entendible, pero esto no nos importa), 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 mas rapida seria guardar la cadena descodificandola de base64 al estado anterior, Tambien se podria hacer un echo de un base64_decode lanzando las header() de una imagen, o escribir la imagen envevida directamente en el html.

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