0

基本上,我正在创建一个非常简单的单页 .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 );
?>

我需要将此代码保存到文件中。我们称之为:myimage.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 的内容。所以如果代码是从另一个页面中提取的,我不能这样做。

4

2 回答 2

1

您可以使用Data 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" />';

希望这就是您正在寻找和帮助的东西。

于 2012-07-30T22:32:08.080 回答
0

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

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

于 2015-12-04T15:08:06.653 回答