2014-10-07 14 views
0

我使用GD庫,我試圖添加一個HTML圖像使用PHP回聲。gd庫 - 圖像上的文本作爲回聲與html

<?php 
$image = imagecreatefrompng("grafika.png"); 
$black = imageColorAllocate($image, 255, 255, 255); 
$font = 'arial.ttf'; 
$text = 4; 
if($text == 4) { 
     echo '<div style="background-color: yellow; width: 100px; height: 100px;">some text here</div>'; 
    } 
imagettftext($image, 16, 0, 50, 100, $black, $font, $text); 
header("Content-type: image/png"); 
imagepng($image); 
?> 

我在做什麼錯? 有沒有不同的方式來做到這一點?

回答

1

你有兩個問題。您將html轉儲到輸出流中,然後使用.png圖像的原始二進制內容跟隨該html。

想必你已經有了

<img src="yourscript.php"> 

,這意味着你要發送HTML到只有二值圖像所允許的範圍內。並以某種方式期待瀏覽器知道您發送HTML 圖像,並以某種方式能夠將它們分開。

由於您正在執行該回聲,因此html會成爲圖像的一部分,並且生成的圖像將被幾乎所有瀏覽器視爲已損壞。他們期待一個PNG,它具有非常特定的標題格式。 HTML將不符合該格式,所以顯然圖像已損壞。

0

如果你被允許嵌入這裏一些文字到圖像比你可以使用imagefilledrectangle功能:

<?php 
$image = imagecreatefrompng("grafika.png"); 
$black = imageColorAllocate($image, 255, 255, 255); 
$font = 'arial.ttf'; 
$text = 4; 
if($text == 4) { 
     imagefilledrectangle($image, 16, 0, 0, 50, 100, rgbcolorallocate($image, 255, 255, 0)); 
     imagettftext($image, 16, 0, 0, 0, $black, $font, 'some text here'); 
    } 
imagettftext($image, 16, 0, 50, 100, $black, $font, $text); 
header("Content-type: image/png"); 
imagepng($image); 
?> 

您也可以使用imagettfbbox函數來計算文本的邊框。