Я пытаюсь отобразить изображение из mysql blob (я знаю, что это не самая лучшая практика) на моей странице PHP, которую я затем приведу в мое приложение для iOS.
У меня возникли проблемы с настройкой заголовка страницы, который, по моему мнению, должен быть установлен как изображение.
Итак, это показывает изображение, но я не верю, что заголовок страницы верен:
//header("Content-type: image/png"); echo '<img src="data:image/png;base64,' . base64_encode( $row['image1'] ) . '" />';
Однако это не показывает мое изображение:
header("Content-type: image/png"); echo '<img src="data:image/png;base64,' . base64_encode( $row['image1'] ) . '" />';
Что мне не хватает? Я считаю, что изображение должно показать, когда заголовок установлен в image / png, но я получаю сообщение об ошибке, которое невозможно отобразить из-за ошибок.
Спасибо!
header("Content-type: image/png");
Это говорит вашему браузеру, что вы собираетесь передать ему необработанные двоичные данные, которые являются PNG-файлами. Таким образом, любой результат после этого должен быть двоичным PNG. Вы не можете размещать HTML и ожидать, что он будет работать
echo '<img src="data:image/png;base64,' . base64_encode( $row['image1'] ) . '" />';
Это работает, потому что вы base64 кодируете свой образ (переводит двоичный текст в текст), выводя его в браузер, а затем сообщая вашему браузеру интерпретировать его как base64.
Если вы хотите вывести необработанные двоичные данные, вам необходимо изменить порядок. Итак, вот ваш HTML
<img src="image.php" />
Теперь вы заметите, что src
указывает на файл PHP. Это потому, что мы хотим, чтобы этот файл PHP возвращал изображение. Вот как выглядит изображение.php
//Your query here $row = mysqli_fetch_assoc($result); header("Content-type: image/png"); echo $row['image1'];
Это работает, потому что браузер вызовет файл PHP, ожидая изображения. header
сообщает браузеру, что это PNG-файл, и теперь вы можете сбрасывать свои двоичные данные PNG.