0

我只是想知道..
我已经看到一些图片可以在这样的 url 中有“参数”:

http://example.com/images/picture.png?width=120

但是当我用谷歌搜索它时,我得到的结果是这样的:

http://example.com/images/picture.php?width=120
(with header("Content-type: image/png") and so on)

(如何)我可以让一段 php 代码在“图片”中运行吗?

4

5 回答 5

5

事实上,没有人关心文件扩展名,它通常只是桌面应用程序的一个提示,只有当你双击它时如何处理文件。但是,在 URL 后面是任何语言的普通脚本,它Content-Type: image/png以二进制形式返回标头和图像。

例如在 PHP

// do something
header('Content-Type: image/png');
readfile('/local/path/to/a/prepared/image.png');
于 2012-07-11T10:14:13.230 回答
1

你不能。但是,您可以将您的网络服务器配置为在有人请求 url A(可能是任何东西,包括看起来像指向图片的东西)时检索 url B(这是一个 PHP 脚本)。事实上,这就是这里的关键点:URL 仅表示负责满足请求的实体希望它们表示的意思。

有关于如何为所有流行的 Web 服务器(例如Apache)进行 url 重写的官方文档。

于 2012-07-11T10:12:58.527 回答
0

看看这个:http
://www.les-stooges.org/pascal/webdesign/vignettes/index.php?la=en 这正是你问的;)

添加:

<img src='vignette.php?f=example1.jpg'> 
于 2012-07-11T10:14:16.027 回答
0

正如其他人所提到的,url 重写负责将 url a 转换为 url b 允许用户使用 .png .jpg .whatever 并将其转换为 .php

php 文件本身输出原始图像数据并设置其标题,以便浏览器知道如何处理返回的数据。

于 2012-07-11T10:14:28.253 回答
0

您需要做的就是让Web 服务器执行一个脚本来响应这个 URL。

URL 不是文件,URL 只是一个请求,Web 服务器可以对它执行任何操作并返回响应。您可以配置您的 Web 服务器以将任何以 .png 结尾的文件作为 PHP 文件执行,或者您可以使用 URL 重写规则告诉服务器 URL 应该由常规 .php 文件处理,而不是在某个目录中提供文件.

Web 服务器是一个黑盒子。他们接受来自客户端的请求,并以一些数据作为回报。中间发生的任何事情完全取决于服务器,仅仅因为请求包含字符串“.png”并不意味着服务器必须直接从硬盘提供 PNG 图像。

                    +-------------------+
---- request ---->  |     Web Server    |
                    |  Here be dragons! |
<--- response ----  |  Or PHP scripts.  |
                    +-------------------+
于 2012-07-11T10:14:34.530 回答