如何在我的服务器上将php-built-png图像保存为png文件?
例如,让我们说我的脚本image-builder-png.php生成一个空白框png图像,其中传递参数:
/image-builder-png.php?color=orange&width=100&height=100
如果我只是在HTML中引用这个图像,这将很好地呈现:
<img src="/image-builder-png.php?color=orange&width=100&height=100">
但是我需要将此图像传递给另一个只接受orange-box.png
等标准图像文件的服务器脚本。
那么我怎样才能拯救&#34;将/image-builder-png.php?color=orange&width=100&height=100
的渲染图像设为orange-box.png
。
答案 0 :(得分:0)
如果在Apache上提供服务,只需使用mod_rewrite将PHP脚本参数屏蔽为完整路径,然后更改脚本以找出动态部分。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/image-builder/(.*)$ /image-builder-png.php?path=$1 [L,QSA]
现在是&#34; /image-bulder/100x100/orange-box.png
&#34;的示例请求将被映射到&#34; /image-builder-png.php?path=100x100/orange-box.png
&#34;。 PHP脚本顶部的简单序言应该能够提取信息并更正动态选项。有点像...
if(isset($_GET['path']))
{
$parts = explode('/',$_GET['path']);
foreach($parts as $part)
{
if(preg_match('!^(?<width>\d+)x(?<height>\d+)$!',$part,$matches))
{
$_GET['width'] = $matches['width'];
$_GET['height'] = $matches['height'];
}
if(preg_match('!^(?<color>\w+)-box\.png$!',$part,$matches))
{
$_GET['color'] = $matches['color'];
}
}
}