Отображение изображений Base64 из базы данных через PHP

У меня есть эта база данных, которая содержит изображения как строки. Эти строки выглядят примерно так:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD... 

Мне нужно создать ссылку, которая отобразит это изображение. Подобно something.com/?id=27 – это образ. Все изображения находятся в формате jpeg. Вот что я пробовал, но не работал:

 <?php $host = "smth"; $user = "smth"; $pass = "smth"; $db_name = "smth"; $dbh = new PDO("mysql:host=$host;dbname=$db_name", $user, $pass); $dbh->exec("SET NAMES utf8"); $q = $dbh->prepare("select content from img where id = :id"); $q->execute(array(':id'=>$_GET['id'])); $row = $q->fetch(PDO::FETCH_BOTH); header("Content-type: image/jpeg"); echo $row['content']; ?> 

Данные извлекаются правильно, но изображение не отображается.

Мне нужно иметь возможность использовать эту ссылку как <img src="mysite.com?id=21" /> и я НЕ хочу этого решения: <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABA..." />

Благодаря!

Решение вашей проблемы находится здесь:

Как декодировать строку base64 (gif) в изображение в PHP / HTML

Цитируя этот источник, но изменяя:

В случае, если вы удалите первый случай и решите декодировать строку, вы должны добавить это, прежде чем повторять данные декодированного изображения:

 header("Content-type: image/gif"); $data = "/9j/4AAQSkZJRgABAQEAYABgAAD........"; echo base64_decode($data); 

Во втором случае используйте вместо этого:

 echo '<img src="data:image/gif;base64,' . $data . '" />'; 

Второй случай плохой, потому что браузер не выполняет кеширование, если одно изображение отображается на нескольких страницах.

Использовать это:

 $code_base64 = $row['content']; $code_base64 = str_replace('data:image/jpeg;base64,','',$code_base64); $code_binary = base64_decode($code_base64); $image= imagecreatefromstring($code_binary); header('Content-Type: image/jpeg'); imagejpeg($image); imagedestroy($image); 

попробуй это

 //your image data $logodata = "/9j/4AAQSkZJRgABAQEAYABgAAD........"; echo '<img src="data:image/gif;base64,' . $logodata . '" />'; 

Попробуй это:

 echo '<img src="data:image/png;base64,' . $base64encodedString . '" />