2012-07-30 72 views
0

基本上我正在創建一個非常簡單的頁面.php模板,我可以輕鬆地用於多個站點的過程。我不想拖動額外的文件等。我瞭解imagecreate功能並知道如何實現它。但是,到目前爲止,我看到的所有內容都涉及到創建img.php文件,然後在要顯示圖像的頁面上調用它。在我的情況下,我想消除img.php頁面,以及如何將代碼直接包含在我希望php創建映像的位置。如何在同一個php頁面上使用php imagecreate代碼?

例如:

<?php 
$my_img = imagecreate(200, 80); 
$background = imagecolorallocate($my_img, 0, 0, 255); 
$text_colour = imagecolorallocate($my_img, 255, 255, 0); 
$line_colour = imagecolorallocate($my_img, 128, 255, 0); 
imagestring($my_img, 4, 30, 25, "thesitewizard.com", 
    $text_colour); 
imagesetthickness ($my_img, 5); 
imageline($my_img, 30, 45, 165, 45, $line_colour); 

header("Content-type: image/png"); 
imagepng($my_img); 
imagecolordeallocate($line_color); 
imagecolordeallocate($text_color); 
imagecolordeallocate($background); 
imagedestroy($my_img); 
?> 

我需要這段代碼保存到文件中。我們稱之爲:myimpage.php。然後,爲了讓PHP創建圖像,我需要把這段代碼我要顯示的圖像的頁面上:

<img src="myimpage.php" alt="Image created by a PHP script" width="200" height="80"> 

我還不如扔在真實圖像文件,因爲這否定什麼,我想實現。所以我的問題是這樣的:我如何使用imagecreate而不需要創建第二個PHP頁面來調用?

我需要在同一頁上使用此代碼的原因是因爲我想將一些變量傳遞給它。

<h2><a href="./" title="<?php echo $title; ?>"><?php echo $title; ?></a></h2> 
THIS IS HERE THE IMAGE GOES (THe IMAGE IS A BASIC BOX THAT DISPLAYS THE CONTENTS OF $IMAGE) 

基本上,我希望圖像顯示$標題的內容。所以我不能這樣做,如果代碼被從另一個頁面拉。

回答

1

可以使用Data URI scheme來創建一個頁面的圖像,並在同一頁面內聯嵌入它:

<img src="data:image/png;base64,*base_64_data_from_imagecreate*" alt="Image"> 

捕獲輸出,你就必須做到:

ob_start(); 
imagepng($my_img); 
$imagedata = ob_get_contents(); 
ob_end_clean(); 

$imagedata = base64_encode($imagedata); 

echo '<img src="data:image/png;base64,' . $imagedata . '" alt="Image" />'; 

希望這就是你尋找和幫助的。

+0

這是接近,但不太工作。當我用鼠標右鍵單擊圖像以在新選項卡中查看它時,它會顯示文字圖像,圖像「data:image/png; Base64,asdklfjasdl; fkjasl; kfjas; kdfjask etc ...等等。不能顯示,因爲它包含錯誤 – Garry 2012-07-30 22:46:54

+0

是的,這是行不通的,因爲圖像不存在於任何地方,而是在頁面本身作爲嵌入的一部分數據,我認爲你可能堅持使用外部腳本。 – drew010 2012-07-30 22:59:02

+0

我也這麼認爲......我在網站上搜索了一下,看看其他人是否也有類似的問題,並且似乎是這種情況,這很好,我可以解決這個問題。如何編輯文字說:thesitewizard.com全部在一行上,並編輯它說三個單詞,但每個單詞居中,並在自己的路線。 – Garry 2012-07-30 23:07:54

0

請記住,儘管您可以使用Data URI方案將圖像數據保存在您的html中,但這不一定是個聰明的主意,因爲瀏覽器無法緩存圖片,但每次該網站都必須重新下載圖片叫做。

瀏覽器通常只下載一個映像一次,然後只發送一個「小」的請求到服務器,檢查他們的圖像緩存是否仍然是最新的。所以如果你的圖像小於這樣的請求的HTTP開銷,那就沒問題了。否則我不會推薦它。

相關問題