Правильный заголовок php mysql blob display image

Я пытаюсь отобразить изображение из 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.