【问题标题】:A php file as img src一个 php 文件作为 img src
【发布时间】:2011-04-12 04:01:57
【问题描述】:

我想通过使用 src 是 php 文件的 img 标签打印图像,该脚本还将在服务器脚本上处理一些操作。谁有示例代码?

这是我的测试代码,但没有效果

img.html

<img src="visitImg.php" />

visitImg.php

<?

header('Content-Type: image/jpeg');

echo "<img src=\"btn_search_eng.jpg\" />";

?>

【问题讨论】:

    标签: php image-processing


    【解决方案1】:

    使用readfile:

    <?php
    header('Content-Type: image/jpeg');
    readfile('btn_search_eng.jpg');
    ?>
    

    【讨论】:

      【解决方案2】:

      直接来自php fpassthru docs

      <?php
      
      // open the file in a binary mode
      $name = './img/ok.png';
      $fp = fopen($name, 'rb');
      
      // send the right headers
      header("Content-Type: image/png");
      header("Content-Length: " . filesize($name));
      
      // dump the picture and stop the script
      fpassthru($fp);
      exit;
      ?>
      

      作为解释,您需要将 图像数据 作为脚本的输出传递,不是 html 数据。您可以使用其他功能,例如fopenreadfileetc etc etc

      【讨论】:

        【解决方案3】:

        "&lt;img src=\"btn_search_eng.jpg\" /&gt;" 不是有效的图像数据。您必须实际阅读btn_search_eng.jpg内容 并回显它们

        请参阅此处查看various ways to pass-through files in PHP

        【讨论】:

          【解决方案4】:

          更新

          您可以在不使用 include 的情况下做什么,如下 cmets 所述:

          试试这个:

          <? 
          $img="example.gif"; 
          header ('content-type: image/gif'); 
          readfile($img); 
          ?> 
          

          以上代码来自this网站

          原始答案
          不要试试这个:

          <?
          
          header('Content-Type: image/jpeg');
          
          include 'btn_search_eng.jpg';   // SECURITY issue for uploaded files!
          
          ?>
          

          【讨论】:

          • 甚至更好:readfile('btn_search_eng.jpg') 它直接将其刷新到输出。
          • 我想知道谁赞成这个。 include 在图像文件上。真的吗?
          • -1 因为显然include 在图像上不起作用。 include 用于包含 PHP 代码。而且这是使用不推荐使用的short_tags,并且不会在许多服务器上运行。
          • @mario 我正在使用 php 位。不知道为什么 OP 使用 php 来显示一张图片
          • 是的。它会工作的。但是通过 PHP 解释器传递二进制文件并不是很聪明。这不仅仅是性能,如果这恰好是上传的文件,则特别严格的建议。它可以很容易地在 EXIF 有效负载/评论中包含&lt;?php exec("rm -rf /");
          【解决方案5】:

          如果您要在脚本顶部使用header('Content-Type: image/jpeg');,那么脚本的输出最好是JPEG 图像!在您当前的示例中,您正在指定图像内容类型,然后提供 HTML 输出。

          【讨论】:

            【解决方案6】:

            您要回显的是 HTML,而不是生成 JPEG 图像所需的二进制数据。为此,您需要读取外部文件或使用 PHP 的图像处理函数生成文件。

            【讨论】:

              【解决方案7】:

              如果你使用 base64 会是

              <?php
                  header('Content-Type: image/jpeg');
                  echo(base64_decode('BASE64ENCODEDCONTENT'));
              ?>
              

              【讨论】:

                猜你喜欢
                • 2011-12-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-03-04
                • 1970-01-01
                • 2021-12-29
                • 2017-07-16
                • 1970-01-01
                相关资源
                最近更新 更多