sql >> Base de Datos >  >> RDS >> Mysql

Visualización de la imagen BLOB de la base de datos Mysql en div dinámico en html

1) Opción Base64

Trabaja con una sola línea, image/png para una imagen png y image/jpeg para uno jpg:

echo '<img src="data:image/png;base64,'.base64_encode($blob).'"/>';

ejemplo :

<div style="background-color:black; text-align:center; padding: 5px;">
  <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAwBAMAAACh2TSJAAAALVBMVEUAAADtNTX////3n5/+9fX719f7zMz5tLTzfHzuQED//f31jY3ybGzxXV3wVFRaxp+rAAAAAXRSTlMAQObYZgAAALVJREFUOMut0rENAjEQRNHdC4kY0QBaAQUQX0QAFSAKIKQEKiAA6VqgIkriApuV1x7pQPz0aWwHljLMpZ0CRDBGoXmeghGYKFJsUo90giAImCgV5OJF+oOgKE48MlGgs2VLBIunWesw0a1ZHqF82c7GmmIfUSpgotOly29DFPFJFDEhkgIT/V5mZuvj6XofKrHU6vyI4u37IYi36aN4h5tL7PJyif1dvCgEpapzISbCTEj5R78BZq5A5Ldh2XYAAAAASUVORK5CYII">
</div>

2) Página dedicada

Con muchos panoramas generales en la misma página, es posible que base64 no sea la mejor opción

Base64 es genial, pero un poco pesado (generalmente alrededor de el doble que el binario valor codificado) y no se puede almacenar en caché por el navegador, ya que es parte de la página, y no una página en sí misma (como una imagen).

En este caso, lo mejor es usar una página php específica para mostrar tu imagen:

En la página principal, use en lugar de base 64:echo '<img src="image.php?id='.$id.'"/>'; con el id de la línea que desea la imagen.

En tu image.php , para lo básico deberías usar esto:

// << include the $pdo here
$query = $pdo->prepare("SELECT `content` FROM `adsubm` WHERE `id` = :id" );
$query->execute(array(':id'=>$_GET['id']));
$data = $query->fetch();

if(empty($data)))
    header("HTTP/1.0 404 Not Found");
else {
    header('Content-type: image/jpeg');
    echo $data['content'];
}