PHP-файл как img src
Я хочу напечатать изображение с помощью тега img, src является файлом php, скрипт также обработает некоторые действия на сервере scirpt. У кого-нибудь есть пример кода?
вот мой тестовый код, но без эффекта
img.html
<img src="visitImg.php" />
visitImg.php
<?
header('Content-Type: image/jpeg');
echo "<img src=\"btn_search_eng.jpg\" />";
?>
7 ответов
Используйте readfile:
<?php
header('Content-Type: image/jpeg');
readfile('btn_search_eng.jpg');
?>
Непосредственно из документов php fpassthru:
<?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;
?>
В качестве объяснения вам необходимо передать данные изображения в качестве выходных данных из сценария, а не данные html. Вы можете использовать другие функции, такие как fopen
, readfile
и т. д. и т. д.
ОБНОВИТЬ
что вы можете сделать без использования 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!
?>
"<img src=\"btn_search_eng.jpg\" />"
недопустимые данные изображения. Вы действительно должны прочитать содержимое btn_search_eng.jpg
и повторить их.
Смотрите здесь о различных способах передачи файлов в PHP.
Если вы собираетесь использовать header('Content-Type: image/jpeg');
в верхней части вашего сценария, тогда вывод вашего сценария должен быть изображением JPEG! В вашем текущем примере вы указываете тип содержимого изображения, а затем предоставляете вывод HTML.
То, что вы повторяете, - это HTML, а не двоичные данные, необходимые для создания изображения JPEG. Чтобы получить это, вам нужно либо прочитать внешний файл, либо сгенерировать файл, используя функции манипулирования изображениями в PHP.
если вы используете base64, это будет
<?php
header('Content-Type: image/jpeg');
echo(base64_decode('BASE64ENCODEDCONTENT'));
?>