在我的网站上,我有一个PHP脚本,它基于$_GET
查询将变成同一图像的重新着色版本。查询为07a
的示例为available here。透明png上的渐变叠加
这里是PHP脚本,做这样的:
<?php
if (isset($_GET['color']) && $_GET['color'] !== "") $color = preg_match('/^([a-fA-F0-9]{3}|[a-fA-F0-9]{6})$/',$_GET['color']) ? $_GET['color'] : '777777';
else $color = '000000';
if (strlen($color) === 3) $color = $color[0].$color[0].$color[1].$color[1].$color[2].$color[2];
$color = str_split($color,2);
foreach ($color as $k=>$m){ $color[$k] = intval($color[$k],16); }
$img = imageCreateFromPng('splat-base.png');
$background = imagecolorallocate($img, 0, 0, 0);
imagecolortransparent($img, $background);
imagealphablending($img, false);
imagesavealpha($img, true);
imagefilter($img, IMG_FILTER_COLORIZE, intval($color[0] - 255 ,16), $color[1], $color[2]);
header('Content-type: image/png');
imagePng($img);
imagedestroy($img);
exit;
?>
的实际工作是由imagefilter
函数完成,剩下的只是保持透明度。我想要做的是,通过$_GET
发送2个颜色值,并使用给定的颜色值创建应用于图像的从上到下的渐变。下面是与值是08f
和0a7
一个例子(较浅的颜色将总是第一个):
的一种可能的解决方案,我认为是产生相同大小的图像作为我splat-base.png
(1000× 1000像素)与渐变,然后用一些欺骗适用于图示图像,但我不知道如何去产生该渐变图像或如何将其应用于splat图像。
我没有像ImageMagick那样安装PHP扩展的能力,所以我必须使用PHP和只使用这些库的内置函数。
这似乎是一个可行的解决方案。谢谢你的回答! – SeinopSys