PHP: извлечение изображений из MySQL Blob непосредственно в тег <img> - PullRequest
1 голос
/ 28 ноября 2011

Я сохранил свои изображения в (средних) BLOB-полях и хочу получить их, встроенные в мои сгенерированные PHP веб-страницы.

Когда я тестирую извлечение сохраненных изображений с помощью

header('Content-type: ' . $image['mime_type']);
echo $image['file_data'];

все выглядит просто отлично.

Однако я еще не нашел способ аккуратно извлечь изображения в середину моих документов. Например, используя

$image  = $row['file_data'];
echo '<img src="data:image/jpeg;base64,'.$image['file_data'].'" alt="photo"><br>';

... или ...

$im = imageCreateFromString($image);

Я просто получаю кучу шестнадцатеричного мусора на экране.

Я изначально сохранил Изображения, используя:

ob_start();
imagejpeg($resizedImage, null, 100);
$content = ob_get_contents();
ob_end_clean();
$sql = sprintf(
 "insert into images (filename, mime_type, file_size, file_data, event_id)
 values ('%s', '%s', %d, '%s',%d)",
 mysql_real_escape_string($fileName),
 mysql_real_escape_string($mimeType),
 $imageSize,
 mysql_real_escape_string($content),
 $eventID 
);
$result = $cn->query($sql);

У кого-нибудь ПОЖАЛУЙСТА есть рабочий фрагмент кода для успешного отображения сохраненного промежуточного файла .jpg в выводе PHP?

Ответы [ 3 ]

6 голосов
/ 28 ноября 2011
echo '<img src="data:image/jpeg;base64,'.base64_encode($image['file_data']).'" alt="photo"><br>';

Однако помните, что старые версии IE не поддерживают этот вид встроенных изображений! Кроме того, браузер не может кэшировать такое изображение, кроме как вместе с содержащей его HTML-страницей.

4 голосов
/ 28 ноября 2011

Вы должны создать своего рода "сервер изображений". Ты уже близко к этому. Например, создайте что-то вроде image.php, которое получит имя изображения и сгенерирует его на лету. Так, например, скажем, вы хотите получить изображение somePic.jpg. Вы можете получить это через:

image.php? Имя = somePic.jpg

<?php
header('Content-type: ' . $image['mime_type']);
echo $image['file_data'];
?>

Ваш тег:

<img src='image.php?name=somePic.jpg' />

Или более общий:

echo "<img src='image.php?name={$image['filename']}' />"
1 голос
/ 28 ноября 2011

Почему бы просто не назвать вашу тестовую страницу image.php, а затем вызвать ее из браузера на отображаемой странице:

<img src="image.php?imageid=123" alt="photo" /> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...