繁体   English   中英

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

[英]How can I save an image generated from a php script into an actual .png image?

如何将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

因此,如何从/image-builder-png.php?color=orange&width=100&height=100将渲染的图像/image-builder-png.php?color=orange&width=100&height=100orange-box.png

如果在Apache上运行,则只需使用mod_rewrite将PHP脚本参数屏蔽为完整路径,然后更改脚本以找出动态部分。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/image-builder/(.*)$ /image-builder-png.php?path=$1 [L,QSA]

现在,示例请求“ /image-bulder/100x100/orange-box.png ”将映射到“ /image-builder-png.php?path=100x100/orange-box.png ”。 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'];
     }
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM