我正在寻找一种通过 php 动态加载图像的方法,类似于使用 Travis 的方式。
例如这个
这是https://api.travis-ci.org/travis-ci/travis-ci.png
这是 https://api.travis-ci.org/travis-ci/travis-ci.png?branch=v3
据我了解,服务器端有一些 php 逻辑,它们接受参数,然后选择要显示的图像。
您如何通过服务器端的 .php 脚本获取图像 URL?
谢谢!
我正在寻找一种通过 php 动态加载图像的方法,类似于使用 Travis 的方式。
例如这个
这是https://api.travis-ci.org/travis-ci/travis-ci.png
这是 https://api.travis-ci.org/travis-ci/travis-ci.png?branch=v3
据我了解,服务器端有一些 php 逻辑,它们接受参数,然后选择要显示的图像。
您如何通过服务器端的 .php 脚本获取图像 URL?
谢谢!
<Directory /var/www/htdocs>
RewriteEngine on
RewriteBase /var/www/htdocs
RewriteCond $1.php -f
RewriteCond $1.png !-f
RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^(.*).png$ image.php?name=%2&%1
</Directory>
为此要求实现 image.php。
最简单的方法是:
<?php
$image = 'default.png';
if ('foo' == 'bar') {
$image = 'otherimage.png';
}
header('Content-Type: image/png');
readfile($image);
?>
现在您可以打开 php 文件,您将获得图像。如果您想拥有一个扩展名为“png”的文件,您可以使用网络服务器的重写功能。
您很可能可以在 .htaccess 中使用 mod_rewrite 将 .png 文件重写为 getimage.php 或类似的东西,将文件名 (travis-ci.png) 作为另一个 get 变量传递getimage.php?name=travis-ci.png
。然后 PHP 文件根据设置的值$_GET['name']
和$_GET['branch']
设置的值显示该图像。
你没有。.png 文件实际上是一个带有 PHP 代码的文件,它输出一个 image/png 标头。
要让 PHP 解释一个 .png 文件,您必须相应地更改您的网络服务器配置。
不过要小心,您可能不想解释所有png 文件(特别是如果您接受文件上传)。