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

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

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

Благодарю.

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

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

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

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

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

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

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

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

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

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


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