я пишу следующий код для отображения изображений из базы данных
<?php mysql_connect("localhost","root",""); mysql_select_db("test"); $qry = "select id from image"; $res = mysql_query($qry) or die(mysql_error()); while($row = mysql_fetch_array($res)) { echo "<img src=image.php?id='$row[0]'>"; } ?>
image.php
<?php $query = mysql_query("SELECT img FROM images WHERE id = ".$_GET['id']); $row = mysql_fetch_array($query); if($type=="pjpeg") $type="jpeg"; header("Content-type:$type"); echo $row['img']; ?>
но это не сработает. он отображает пустой значок изображения.
Вы также можете использовать кодировку base64 для создания изображения. подобно
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAWgBaAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAAB..." />
UPDATE, пример кодировки base64
Вы можете сделать это легко:
<?php $imageId = intval($_GET["id"]); $query = mysql_query("SELECT img FROM images WHERE id = ". $imageId); $row = mysql_fetch_array($query); $mime = null; // place $type init. here if ($type=="pjpeg") // <<< where do you get $type btw? $mime = "image/jpeg"; $b64Src = "data:".$mime.";base64," . base64_encode($row["img"]); echo '<img src="'.$b64Src.'" alt="" />'; ?>
jpeg
не является допустимым типом содержимого, он должен быть image/jpeg
Как и выше +, обязательно передайте параметр replace = true
функции заголовка.
header( 'Content-Type: image/jpeg', true );