1) Opcja Base64
Pracuj z jedną linią, image/png
dla obrazu png i image/jpeg
dla jednego jpg :
echo '<img src="data:image/png;base64,'.base64_encode($blob).'"/>';
przykład :
<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) Dedykowana strona
Przy wielu dużych obrazach na tej samej stronie base64 może nie być dobrym wyborem
Base64 jest fajny, ale nieco ciężki (zwykle około dwa razy jako plik binarny zakodowana wartość) i nie można ich zapisać w pamięci podręcznej przez przeglądarkę, ponieważ jest częścią strony, a nie samą stroną (jak obraz).
W takim przypadku najlepiej jest użyć określonej strony php do wyświetlenia obrazu :
Na stronie głównej zamiast bazy 64 użyj:echo '<img src="image.php?id='.$id.'"/>';
z identyfikatorem linii, w której chcesz uzyskać obraz.
Na twoim image.php
, dla podstawowych powinieneś użyć tego :
// << 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'];
}