El método común para almacenar imágenes en una base de datos es convertir la imagen a datos base64
antes de almacenar los datos. Este proceso aumentará el tamaño en un 33%. Alternativamente, es posible almacenar directamente la imagen como BLOB
; por ejemplo:¿Está almacenando la imagen en la base de datos directamente o como datos base64?
$image = new Imagick("image.jpg");
$data = $image->getImageBlob();
$data = $mysqli->real_escape_string($data);
$mysqli->query("INSERT INTO images (data) VALUES ('$data')");
y luego mostrar la imagen con
<img src="data:image/jpeg;base64,' . base64_encode($data) . '" />
Con este último método, ahorramos 1/3 espacio de almacenamiento. ¿Por qué es más común almacenar imágenes como base64
en bases de datos MySQL?
ACTUALIZACIÓN: Hay muchos debates sobre las ventajas y desventajas de almacenar imágenes en las bases de datos, y la mayoría de las personas creen que no es un enfoque práctico. De todos modos, aquí supongo que almacenamos la imagen en la base de datos y discutimos el mejor método para hacerlo.
Guarde los datos en un archivo y almacene solo la ubicación del archivo o url en la base de datos – Fredrik
@Fredrik Si decide almacenar datos en un archivo, ¿por qué como datos base64? Simplemente podemos guardar el archivo de imagen original. – Googlebot
Pensé que lo estabas enviando desde un dispositivo como iPhone u otra cosa. Entonces no desea enviar datos brutos sino cadena base64 en JSON o algo en su lugar. – Fredrik