如何将php脚本生成的图像保存为实际的.png图像?

时间:2014-03-15 20:07:46

标签: php image imagemagick

如何在我的服务器上将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

1 个答案:

答案 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'];
     }
   }
}