【问题标题】:PHP file in Image source图像源中的 PHP 文件
【发布时间】:2014-06-08 07:09:25
【问题描述】:

我遇到了以前的开发人员在图像源中使用 php 文件的情况。这里是代码

<img class="large_image" src="http://www.example.com/common/resize.php?img=4_jisokupo_jpg&amp;d=467&amp;w=461&amp;h=307" id="large_image_1" style="display: inline;">

当我复制图像标签的源代码并在浏览器中运行并检查其源代码时,它再次给我图像标签

<img class="decoded" src="http://www.example.com/common/resize.php?img=4_jisokupo_jpg&amp;d=467&amp;w=461&amp;h=307" alt="">

请指导他们在做什么?是img src里面的img标签吗?

我知道这是一个常见问题,但我是 PHP 新手。

更新:我们可以在 src 中使用 php 文件吗?它应该在 php 文件中做什么?

【问题讨论】:

  • When I Copy source of image tag and run in browser and check its source code,It again give me Image tag again 这是什么意思?你能描述一下你正在做什么,你期待什么吗?浏览器不知道也不关心 PHP 在服务器上。 PHP 动态生成图像(在本例中源自另一个图像文件),并将其返回给浏览器。
  • 我认为你不明白 OP 发生了什么。
  • 简单地说他们已经使用 php 文件的路径传递了他们想要的图像的宽度和高度。当我在浏览器中运行该 php 文件路径时,它给了我 img tah

标签: php image


【解决方案1】:

其实可以使用PHP来生成图片,例如:

$contents = file_get_contents('path_to_an_image.jpeg');
header('Content-type: image/jpeg');
echo $contents;

这只是一个澄清你的例子,但在你的问题中,情况是不同的。看起来,http://www.example.com/common/resize.php 正在被调用,并且查询字符串被传递给该脚本,以便脚本可以使用以下命令访问这些参数:

// in resize.php
$img = $_GET['img']; // 4_jisokupo_jpg
$d = $_GET['d']; // 467
$w = $_GET['w']; // 461
$w = $_GET['h']; // 307

然后在调整图像大小后将返回新图像,请查看imagejpeg / imagecreatefromjpeg 了解更多想法。所以,当脚本运行回显&lt;img src='some.php' /&gt;时,会执行some.php文件来传递图片,并在浏览器中打印动态图片。

观看YouTube (PHP Custom Image Cropping Tutorial) 上的以下视频,了解使用PHP 处理图像的更多信息。

【讨论】:

  • 图片不是jpeg怎么办?这段代码会好吗?header('Content-type: image/jpeg');
  • 不,不同的图片有不同的功能。检查GD and Image Functions
【解决方案2】:

当您在网络浏览器中查看源代码时,您正在查看已解释的 php/html/etc。生成它的PHP 的输出;这就是你感到困惑的原因。我建议在 PHP 上找到一些介绍性课程,以便从服务器和客户端的角度更好地了解事物的工作原理。

              SERVER
      .----Website (PHP)-----------------------------------------------.
      |        |                                                       |
      |        |                                                       |
      |        |______Image Class "large_image"                        |
      |                          |                                     |
      |                          |                                     |
      |                          |____source "some large image"        |
      |                                          |                     |
       \_______  ________________________________|_____________________/
               ⬇

             CLIENT    
      .------Web Browser (rendered PHP)--------------------------------.
      |        |                                                       |
      |        |                                                       |
      |        |_______Image Class "decoded"                           |
      |                          |                                     |
      |                          |                                     |
      |                          |_____source "same large image"       |
      |                                                                |
      \________________________________________________________________/

【讨论】:

  • 如果你检查 src 标签,它有带有一些参数的 PHP 文件路径..他们在 php 中做了什么?
  • class="large_image" 最有可能是作为 css 操作的样式创建的。在源 URL 的末尾,resize.php?img=4_jisokupo_jpg&amp;amp;d=467&amp;amp;w=461&amp;amp;h=307 将图像大小调整为 461 x 307id 是您观察到的标签,display:inline 是一个 css 指令,用于在 divspan 它在里面。
  • 将图片大小调整为 461x307,我们可以这样做将图片直接显示到浏览器中吗?如 resize.php 中一样?
  • 是的,试着改变最后的数字,比如http://www.example.com/common/resize.php?img=4_jisokupo_jpg&amp;amp;d=667&amp;amp;w=861&amp;amp;h=507
  • resize.php 里面会有什么?会是简单的 img 标签?
【解决方案3】:

当您从 html 复制 src 并将其放入浏览器时,您正在打开由 PHP 在浏览器中动态创建的图像。

当您直接在浏览器中打开图像时,浏览器会在其 DOM 中生成一些非常简单且基本的 html,以显示您已打开的图像直接地。当您检查元素 并转到 HTML 选项卡时,您会看到该 HTML。如果您密切注意,一旦直接打开图像,您甚至不会看到“查看源”按钮。您只会看到“检查元素”按钮。

该 HTML 不是源代码,而只是您正在查看的“页面”的 DOM 表示。

关于您的EDIT

所以,src 中的 php 文件是一个动态创建图像并输出其二进制数据的文件。这是可能的,并且在 WereWolf - The Alpha 的答案中得到了更多解释。您的浏览器识别二进制数据,并从中渲染图像。 (部分是因为它知道它是作为 'img' 标签的 'src' 打开的,所以它期望 url 会返回一个图像。但主要是因为发送的 'content-type' 标头也说明了这一点数据是图像。)

当浏览器将二进制数据显示为图像时,浏览器本身会在 DOM 中生成一些 HTML,因此图像会显示为“html”页面。因为,嘿,那是浏览器做的,他们想向你展示 HTML :)

【讨论】:

  • 他们如何以及为什么在 img src 中有 php 文件?他们应该在 php 文件中做什么?
猜你喜欢
  • 2012-03-25
  • 2016-02-06
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多