2015-10-05 3 views
-1

является возможность деформировать в PHP изображение в HTML-разметке и отправить его на стороне клиентаКак обернуть PHP нарисованное изображение в HTM IMG Tag

<?php 
$a = "A"; 
$ima = imagecreate(100, 30); 
$bg = imagecolorallocate($ima, 255, 255, 255); 
$textcolor = imagecolorallocate($ima, 0, 0, 255); 
imagestring($ima, 5, 0, 0, '$a, $textcolor); 
imagepng($ima); 
imagedestroy($ima); 

что-то вроде

echo '<img src='+ $ima+' alt=' ' />'; 

Update

<?php 
$a = "A"; 
$b = "B"; 
$c = "C"; 
$n = "8"; 

$ima = imagecreate(100, 30); 
$bg = imagecolorallocate($ima, 255, 255, 255); 
$textcolor = imagecolorallocate($ima, 0, 0, 255); 
imagestring($ima, 5, 0, 0, '$a, $textcolor); 
header('Content-type: image/png'); 
imagepng($ima); 
imagedestroy($ima); 

$imb = imagecreate(100, 30); 
$bg = imagecolorallocate($imb, 255, 255, 255); 
$textcolor = imagecolorallocate($imb, 0, 0, 255); 
imagestring($imb, 5, 0, 0, '$a, $textcolor); 
header('Content-type: image/png'); 
imagepng($imb); 
imagedestroy($imb); 

$imc = imagecreate(100, 30); 
$bg = imagecolorallocate($imc, 255, 255, 255); 
$textcolor = imagecolorallocate($ima, 0, 0, 255); 
imagestring($imc, 5, 0, 0, '$a, $textcolor); 
header('Content-type: image/png'); 
imagepng($imc); 
imagedestroy($imc); 

$imn = imagecreate(100, 30); 
$bg = imagecolorallocate($imn, 255, 255, 255); 
$textcolor = imagecolorallocate($ima, 0, 0, 255); 
imagestring($imn, 5, 0, 0, '$a, $textcolor); 
header('Content-type: image/png'); 
imagepng($imn); 
imagedestroy($imn); 

echo '<img src="script.php?id=1" />'; 
echo '<img src="script.php?id=2" />'; 
echo '<img src="script.php?id=3" />'; 
echo '<img src="script.php?id=4" />'; 
?> 

ответ

1

Это. Что вам нужно сделать, так это ссылаться на свой PHP-скрипт в теге изображения.

<img src="yourPhpScript.php" /> 

Убедитесь, что в вашем PHP скрипт, вы выводя правильный Content-Type заголовок.

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

В качестве альтернативы, вы могли бы base64-encode the image data, но это не рекомендуется, так как это приводит к увеличению размера загрузки 33%.

Кроме того, у вас есть паразитная отметка ' на третьей странице с последней строки.

+0

@Behseini Echo четыре метки изображения. ' и т. Д. – Brad

+0

Вместо эха, я считаю, что вы можете заставить скрипт умереть с выходом, вроде возврата вне функции – Wargog

+0

@Behseini. Ваше обновление по-прежнему не мешает вам иметь четыре тега изображения. – Brad

0

Вы можете использовать захват выходного буфера.

Как

$a = "A"; 
$ima = imagecreate(100, 30); 
$bg = imagecolorallocate($ima, 255, 255, 255); 
$textcolor = imagecolorallocate($ima, 0, 0, 255); 
imagestring($ima, 5, 0, 0, $a, $textcolor); 
ob_start(); 
imagepng($ima); 
$obContents = ob_get_contents(); 
ob_end_clean(); 
imagedestroy($ima); 
echo('<img src="data:image/png;base64,' . base64_encode($obContents) . '" />'); 
+0

Этот метод не идеален, поскольку он заставляет вас очищать любую другую буферизацию вывода, а base64 - около 33%. – Brad

+0

Конечно, но это предпочтительный метод генерации изображения и HTML-кода из одного и того же файла PHP без записи на диск. И вы также можете использовать сжатие gzip. Другим было бы иметь оператор 'switch' и два разных типа содержимого в одном файле, но это может быть не предпочтительным в случае требования к обеспечению последовательного изображения. – Victor

+0

Или ... shared memory, Redis и т. Д. Лучшим вариантом здесь является переход в параметр для того, что должен сказать этот текст, поскольку это единственное, что меняется. Я только указываю, что этот метод не идеален, так что люди не предполагают, что это единственный способ сделать это. Каждый раз, когда я объясняю людям, как это сделать, они сразу же запираются на мысль о том, что кодировка base64 - это путь, потому что они используют для обработки всех своих данных в одном скрипте и затрудняются думать более широко. Им нужно понять, что для этого метода есть компромиссы. – Brad

 Смежные вопросы

  • Нет связанных вопросов^_^