Файл php как img src

Я хочу напечатать изображение с помощью тега img, который src является php файлом, script также обработает некоторые действия на сервере. У кого-нибудь есть пример кода?

вот мой тестовый код, но без эффекта

img.html

<img src="visitImg.php" />

visitImg.php

<?

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

echo "<img src=\"btn_search_eng.jpg\" />";

?>

Ответ 1

Используйте readfile:

<?php
header('Content-Type: image/jpeg');
readfile('btn_search_eng.jpg');
?>

Ответ 2

Непосредственно из php fpassthru docs:

<?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;
?>

В качестве объяснения вам необходимо передать данные изображения как выходные данные script, не html. Вы можете использовать другие функции, такие как fopen, readfile, и т.д. И т.д. И т.д.

Ответ 4

UPDATE

что вы можете сделать, не используя include, как сказано ниже в комментариях:

попробуйте следующее:

<? 
$img="example.gif"; 
header ('content-type: image/gif'); 
readfile($img); 
?> 

Вышеприведенный код находится на этом сайте

Оригинальный ответ
НЕ попробуйте следующее:

<?

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

include 'btn_search_eng.jpg';   // SECURITY issue for uploaded files!

?>

Ответ 5

Если вы собираетесь использовать header('Content-Type: image/jpeg'); в верхней части вашего script, то выход вашего script должен быть лучше JPEG-изображения! В вашем текущем примере вы указываете тип содержимого изображения, а затем предоставляете вывод HTML.

Ответ 6

То, что вы эхом, это HTML, а не двоичные данные, необходимые для создания изображения JPEG. Чтобы получить это, вам нужно либо прочитать внешний файл, либо сгенерировать файл с помощью функций манипуляции с изображениями PHP.