[英]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=100
为orange-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.