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


How to use php imagecreate code on the same php page?

基本上,我正在创建一个非常简单的单页.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的内容。因此,如果代码是从另一个页面中提取的,我就不能这么做。

您可以使用数据URI方案在页面中创建图像,并将其内联嵌入同一页面:

<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" />';

希望这就是你所寻求的,并对你有所帮助。

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

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