Отображение изображения в кодировке base64 в браузере при нажатии на определенный URL - PullRequest
0 голосов
/ 04 января 2019

Я хочу отобразить изображение, закодированное с base64_encode. Изображение извлекается из базы данных mysql на основе параметра id, переданного через URL. Тип контента был установлен. Скажем, у меня есть код в файле index.php, и я нажимаю на этот файл в браузере с URL-адресом localhost: 8080 / products_images / index.php? Id = 1000

header('Content-Type:image/png');
if (isset($_GET['id'])) {
$id = $_GET['id'];
} 

$sql = "SELECT image FROM table WHERE id = ".(int)$id;

$image = $dbInstance->getArray($sql);
unset($sql);
echo '<img src="data:image/png; base64,'.$image[0]['image'].'"/>';

Вместо отображения изображения в браузере, оно говорит: Изображение «localhost: 8080 / products_images / index.php? Id = 1000» не может быть отображено, поскольку оно содержит ошибки.

Я знаю, что это происходит, потому что в DOM браузера я могу четко видеть тег изображения, следующий за <img src="localhost:8080/products_images/index.php?id=1000"> Вместо того, чтобы показывать закодированную строку в тег img src, он показывает весь URL. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 04 января 2019

Чтобы отправить изображение клиенту, вы можете попытаться загрузить изображение из строки с помощью функции imagecreatefromstring, а затем отправить его клиенту с помощью функции imagepng, которое должно дать вам что-то вроде этого:

<?php
    $data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
    . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
    . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
    . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';

    $data = base64_decode($data);
    $im = imagecreatefromstring($data);

    if ($im !== false) {

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

        // Send the image
        imagepng($im);

        imagedestroy($im);

    } else {

        echo 'An error occurred.';

    }
?>

Я получил его от php doc

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