如何在同一个php页面上使用php imagecreate代码?

时间:2012-07-30 22:25:30

标签: php php-gd

基本上我正在创建一个非常简单的单页.php模板,我可以轻松地将其用于多个站点。我不想拖动额外的文件等。我知道imagecreate功能并知道如何实现它。但是,到目前为止我所看到的一切都涉及创建一个img.php文件,然后在你想要显示图像的页面上调用它。在我的情况下,我想要消除img.php页面以及一些如何直接在我想要php创建图像的地方包含代码。

例如:

<?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)

基本上,我希望图像显示$ title的内容。如果从其他页面中提取代码,我就无法做到这一点。

2 个答案:

答案 0 :(得分: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" />';

希望这是你寻找和帮助的。

答案 1 :(得分:0)

请记住,尽管您可以使用数据URI方案在html中保存图像数据,但这不一定是个聪明的主意,因为浏览器无法缓存图片,但每次网站都必须再次下载调用。

浏览器通常会下载一次图像,之后只向服务器发送“小”请求,检查其图像缓存是否仍然是最新的。因此,如果您的图像小于此类请求的http开销,那就没问题了。否则我不会推荐它。