Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Exibindo imagem BLOB do banco de dados Mysql em div dinâmico em html

1) Opção Base64


Trabalhe com uma única linha, image/png para uma imagem png e image/jpeg para um jpg:
echo '<img src="data:image/png;base64,'.base64_encode($blob).'"/>';

exemplo :


<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


Com muitas imagens grandes na mesma página, a base64 pode não ser a boa escolha

Base64 é legal, mas um pouco pesado (geralmente em torno de duas vezes como o binário valor codificado) e não pode ser armazenado em cache pelo navegador, pois é uma parte da página, e não uma página por si só (como uma imagem).

Nesse caso, o melhor é usar uma página específica do php para exibir sua imagem:

Na página principal, use em vez de base 64 :echo '<img src="image.php?id='.$id.'"/>'; com o id da linha que você quer a imagem.

Em seu image.php , para o básico você deve usar isso:
// << 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'];
}