如何使用PHP GD显示动态生成的内嵌图像

时间:2011-01-25 05:13:49

标签: php gd

我正在尝试通过使用PHP GD合并图像来动态生成图像。我想知道是否有一种方法可以在我的网页中显示图像,而无需将其存储在服务器上。

例如,我创建了以下用于合并图像的代码......

function create_image() {
   $main_image = imagecreatefrompng("images/main.png");
   $other_image = imagecreatefrompng("images/other.png");
   imagecopy($main_image, $other_image, 114, 53, 0, 0, 49, 34);
   imagepng($main_image);
   imagedestroy($other_image);
}

现在我的html代码到现在为止......

<div class="sidebar-avatar">
   <img src="avatar_pattern.png" class="pattern1" width="430" height="100" />
</div>

我应该如何调用php函数,以便显示我为其指定的div中生成的图像。

更新:我发现使用Content-type: image/png,但这意味着我必须在不是内联的单独页面上显示图片。

3 个答案:

答案 0 :(得分:6)

使用base64_encode将其转换为Base64,并将其作为img标记中的dataURI回显!

Inline Images with Data URLs

答案 1 :(得分:4)

你可以:

  1. 将图像显示为数据:http://en.wikipedia.org/wiki/Data_URI_scheme(警告:高带宽消耗。)
  2. 创建一个显示图像的单独文件,例如display_image.php
  3. 并使用代码:

    <img src="display_image.php">
    

    使用您显示的标题和代码。

答案 2 :(得分:0)

<img src="image.php?other_image=(filename)">

并在image.php中创建图像,并使用

输出
header('Content-Type:image/png');imagepng($main_image);

您也可以将图像创建部分放在同一个脚本中:

if($other_image=$_GET['other_image'])
{
    // create image
    ...
    // output image
    header('Content-Type:image/png');
    imagepng($main_image);
}
else
{
    // default behaviour
    ...
    echo '<img src="',basename(__FILE__),'?other_image=',urlencode('images/other.png'),'">';
    ...
}

注意防止注射!