如何使用PHP GD生成并显示动态生成的内联图片

5

我正在尝试使用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个回答

6

1
要非常注意大小限制和浏览器支持。一般来说,这不是一个好主意,但Aweb在这里的回答是完全正确的。 - Brad

4
您可以选择以下两种方式之一:
  1. 将图片作为数据进行显示:http://en.wikipedia.org/wiki/Data_URI_scheme(警告:带宽消耗较高)。
  2. 创建一个独立的文件来展示图片,例如 display_image.php。
然后使用以下代码:
<img src="display_image.php">

通过您展示的头和代码。

第二个想法对我来说似乎是最好的,这也是我过去所做的。你只需要使用GET或SESSION来存储你的数据,例如。 - Aweb

1

<img src="image.php?other_image=(文件名)">

在 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'),'">';
    ...
}

注意防止注入攻击!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接