【问题标题】:How to display an inline image generated on the fly using PHP GD如何使用 PHP GD 显示动态生成的内联图像
【发布时间】:2011-06-14 23:35:20
【问题描述】:

我正在尝试通过使用 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,但这意味着我必须在单独的页面上显示图像,而不是内联。

【问题讨论】:

    标签: php gd


    【解决方案1】:

    使用 base64_encode 将其转换为 Base64 并在 img 标签中将其作为 dataURI 回显!

    Inline Images with Data URLs

    【讨论】:

    • ... 并且非常了解大小限制和浏览器支持。一般来说,这不是一个好主意,但 Aweb 在这里的回答是完全正确的。
    【解决方案2】:

    您可以:

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

    并使用代码:

    <img src="display_image.php">
    

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

    【讨论】:

    • 第二个想法对我来说似乎是最好的,这就是我过去所做的。例如,您只需使用 GET 或 SESSION 来存储您的数据。
    【解决方案3】:

    &lt;img src="image.php?other_image=(filename)"&gt;

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

    注意防止注射!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2011-05-16
      相关资源
      最近更新 更多