【问题标题】:load a php image using src使用 src 加载 php 图像
【发布时间】:2011-05-17 17:20:22
【问题描述】:

是否可以使用以下方式加载图像:

<img src="image.php?image_id=1">

?

对于image.php

$image_id = $_GET['image_id']; 
echo "image".$image_id.".png"; 

【问题讨论】:

  • 你不是说src吗?我刚刚纠正了它。
  • 您的问题的答案是肯定的
  • 您确定要使用服务器的资源读取然后回显图像吗?我不太确定...

标签: php image


【解决方案1】:

你必须返回一个有效的图像,使用file_get_contentsreadfile获取图像的内容然后输出到浏览器

 header("Content-Type:image/png");

    $image_id = $_GET['image_id']; 

    if(is_file($file = "image".$image_id.".png") ||  is_file($file = "no_image.png"))
        readfile($file); 

【讨论】:

  • 不要提供带有 text/html 内容类型的图片。
  • 输出仍然需要标题
  • 或者,如果这不是为了隐藏真实的图像位置,或者如果图像不是动态创建的,则可以轻松地使用Location 标头重定向到图像。 (如果可以通过 http 访问)
【解决方案2】:

如果数据库中有 png 内容,请遵循其他答案。如果您只需要数据库中的 id,只需 &lt;img src="image&lt;?=$image_id?&gt;.png"&gt;

【讨论】:

    【解决方案3】:

    不,这是不可能的。您必须改为将图像文件的内容写入输出流。

    【讨论】:

      【解决方案4】:

      是否可以加载图像使用: &lt;img src="image.php?image_id=1"&gt;

      是的。 URL 是 URL。决定内容的是内容类型,而不是 URL 本身中的任何字符。

      $image_id = $_GET['image_id']; echo "image".$image_id.".png";

      不是那样的。您要么必须读取图像文件,然后使用合适的内容类型将其输出,要么重定向(使用位置标头)到静态图像。

      【讨论】:

        【解决方案5】:

        您必须更改标题内容类型并打印图像文件的内容。这是您的 image.php 文件的示例:

        $image_id = $_GET['image_id']; 
        $filename = "image".$image_id.".png"; 
        header('Content-Type: image/png');
        print file_get_contents($filename);
        

        【讨论】:

          【解决方案6】:

          一个班轮....

          echo (file_exists($_GET['image_id'])) ? header("Content-Type:image/png").readfile($_GET['image_id']).die() : false;
          

          【讨论】:

            猜你喜欢
            • 2016-03-29
            • 2021-04-24
            • 2021-10-03
            • 2017-05-22
            • 1970-01-01
            • 2014-05-16
            • 2018-02-13
            • 2017-05-28
            • 1970-01-01
            相关资源
            最近更新 更多