2015-10-05 24 views
-1

,纔有可能經一個PHP圖像中的HTML標記並將其發送給客戶端如何包裝PHP拖圖像到HTM img標籤

<?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=' ' />'; 

更新

<?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回聲出四個圖像標籤。 '等' – 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

當然,但這是從同一個PHP文件生成圖像和HTML代碼而不寫入磁盤的首選方法。你也可以使用gzip壓縮。 另一種方法是在同一個文件中有一個'switch'語句和兩個不同的內容類型,但在順序圖像渲染要求的​​情況下可能不會更好。 – Victor

+0

或...共享內存,Redis等。這裏最好的選擇是傳入一個參數來表示文本應該說的內容,因爲這是唯一不斷變化的內容。我只指出,這種方法並不理想,所以人們不會認爲這是做到這一點的唯一方法。每當我向人們解釋如何做到這一點時,他們都會立即想到base64編碼是一種方法,因爲他們正在使用單一腳本處理所有數據,並且難以進行更廣泛的思考。他們需要明白,這種方法存在折衷。 – Brad