Возвратите страницу PHP как изображение

В ответе на вопросный заголовок (найденный поиском в Google), а не на повторный вопрос Чтобы остановить разрыв строки, когда у вас есть разные теги заголовков, например,

<h5 style="display:inline;"> What the... </h5><h1 style="display:inline;"> heck is going on? </h1>

Даст вам:

Что за ... чёрт возьми, происходит?

, а не

Что за чёрт ... продолжается? (стек не даст мне разбить строку, лол ... в любом случае, надеюсь, у вас есть идея.

60
задан Martin Geisler 30 May 2009 в 15:22
поделиться

2 ответа

В руководстве по PHP есть этот пример :

<?php
// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;
?>

Важным моментом является то, что вы должны отправить заголовок Content-Type. Кроме того, вы должны быть осторожны и не включать лишние пробелы (например, новые строки) в вашем файле до или после тегов .

Как предлагается в комментариях, вы можете избегайте опасности появления лишних пробелов в конце сценария, опуская тег ?> :

<?php
$name = './img/ok.png';
$fp = fopen($name, 'rb');

header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

fpassthru($fp);

Вам все равно нужно тщательно избегать пробелов в верхней части сценария. Одной из особенно сложных форм пробелов является спецификация UTF-8 . Чтобы этого избежать, не забудьте сохранить сценарий как «ANSI» (Блокнот), «ASCII» или «UTF-8 без подписи» (Emacs) или аналогичный.

105
ответ дан 24 November 2019 в 17:41
поделиться

Еще один простой вариант (не лучше, просто другой), если вы не читаете данные из базы данных, - просто использовать функцию для вывода всего кода за вас ... Примечание: если вы также хотите, чтобы php считывал размеры изображения и передавал их клиенту для более быстрого рендеринга, вы можете легко сделать это с помощью этого метода.

<?php
  Function insertImage( $fileName ) {
    echo '<img src="path/to/your/images/',$fileName,'">';    
  }
?>

<html>
  <body>
    This is my awesome website.<br>
    <?php insertImage( '1234.jpg' ); ?><br>
    Like my nice picture above?
  </body>
</html>
-5
ответ дан 24 November 2019 в 17:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: