У меня есть эта база данных, которая содержит изображения как строки. Эти строки выглядят примерно так:
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 . '" />