2012-07-30 75 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开销,那就没问题了。否则我不会推荐它。

相关问题