Получение изображения (blob) из mysql php

Не могу понять как получить изображение из БД. Я знаю что лучше не хранить изображение в БД, но все таки, как его получить и вывести??

<?php
$hostname = "localhost";
$username = "root";
$password = "х";
$database = "photo_test";
$usertable = "photo";


//подклчение к бд
$conn = mysqli_connect($hostname, $username, $password, $database) or die('Oops');


$sql = "SELECT * FROM $usertable WHERE id=2";

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Alexandr

Уже есть ответ на ваш вопрос.

Оригинал: https://stackoverflow.com/a/6273415

Вы можете использовать несколько разных методов в зависимости от того, какая библиотека изображений php установлена. Вот несколько примеров. Обратите внимание, что echo - это просто трюк, который я использую для отображения нескольких изображений из одного и того же скрипта php при циклическом просмотре ресурса результата MySQL. Вы также можете выводить через header (), как показал @NAVEED.

GD:

$image = imagecreatefromstring($blob); 

ob_start(); //You could also just output the $image via header() and bypass this buffer capture.
imagejpeg($image, null, 80);
$data = ob_get_contents();
ob_end_clean();
echo '<img src="data:image/jpg;base64,' .  base64_encode($data)  . '" />';

ImageMagick (iMagick):

$image = new Imagick();
$image->readimageblob($blob);
echo '<img src="data:image/png;base64,' .  base64_encode($image->getimageblob())  . '" />';

GraphicsMagick (gMagick):

$image = new Gmagick();
$image->readimageblob($blob);
echo '<img src="data:image/png;base64,' .  base64_encode($image->getimageblob())  . '" />';
→ Ссылка