Как читать изображения из базы данных MySQL с помощью PHP? - PullRequest
1 голос
/ 23 января 2011

Как читать изображения из базы данных MySQL с помощью PHP?

Если изображения хранятся в BLOB-базе в базе данных, как использовать двоичные данные, которые я получаю, и превращать их в изображение, используя srcв <img> или используя свойство CSS background-image?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 24 января 2011

Чтобы напрямую использовать двоичные данные в качестве источника изображения, вы можете использовать data URI-схему , например:

$uri = 'data:image/png;base64,'.base64_encode($row['binary-data']);

Этот URI можетзатем использовать непосредственно в качестве источника изображения:

background-image: url(<?php echo $uri; ?>)
<img src="<?php echo $uri; ?>">

Но это имеет ряд существенных недостатков: кроме отсутствия поддержки этих данных URI в старых браузерах, data URI также имеют недостатки в отношении полезной нагрузки, кэширования и ссылок .

1 голос
/ 23 января 2011

Что вы, вероятно, должны делать, если храните изображения в виде больших двоичных объектов, это предоставить URL-адрес, который вызывает ваш сценарий таким образом, чтобы он мог определить, какое изображение возвращать.

Используйте этот URL-адрес как src,или background-image: url(...) и в сценарии считайте BLOB из базы данных в переменную.

Затем выведите переменную после соответствующей информации заголовка, сообщив браузеру, что она должна получить изображение, например:

header('Content-Type: image/jpeg');

Также целесообразно отправлять заголовок Content-Length и полезную информацию о кэшировании / истечении срока действия.


Примечание.Сказав все это, я склонен опасаться использования BLOB-объектов в базах данных, они имеют тенденцию к снижению производительности.Когда я хочу сохранить изображения, я сохраняю их в некоторой структуре каталогов и ссылаюсь на них в базе данных некоторым образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...