Mysql
 sql >> Base de données >  >> RDS >> Mysql

Affichage de l'image BLOB de la base de données Mysql en div dynamique en html

1) Option Base64

Travailler avec une seule ligne, image/png pour une image png et image/jpeg pour un jpg :

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

exemple :

<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) Page dédiée

Avec de nombreuses grandes images sur la même page, la base64 n'est peut-être pas le bon choix

Base64 est cool, mais un peu lourd (généralement environ deux fois le binaire valeur encodée) et ne peut pas être mis en cache par le navigateur car il fait partie de la page, et non une page en soi (comme une image).

Dans ce cas, le mieux est d'utiliser une page php spécifique pour afficher votre image :

Sur la page principale utiliser à la place de la base 64 :echo '<img src="image.php?id='.$id.'"/>'; avec l'identifiant de la ligne dont vous voulez l'image.

Sur votre image.php , pour la base vous devriez utiliser ceci :

// << 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'];
}