这是我选择图像的代码,然后将该图像转换为多种颜色,然后将它们发布到我服务器上的目录中。我在使用" if($ im&& imagefilter($ im,IMG_FILTER_COLORIZE,$ colour-> RGB))"部分查询。如果我在" $ colour-> RGB"中输入实际的RGB代码。部分工作。但是,保存在数据库中的RGB是正确保存的,这是查询的结果。
白 255,255,255 白色阴影失败。
绿色 0,255,0 绿色阴影失败。
橙 255,165,0 橙色阴影失败。
红 255,0,0 红色阴影失败。
粉红色 255,51,153 粉红色底纹失败。
蓝 0,0,255 蓝色阴影失败。
银 192,192,192 银色阴影失败。
黄色 255,255,0 黄色阴影失败。
<?php
include('PATH_TO/ez_sql_core.php');
include('PATH_TO/ez_sql_mysql.php');
$db = new ezSQL_mysql('xxxx','xxxx','xxxx','xxxx');
$colours = $db->get_results("SELECT Colour, RGB FROM colours");
foreach($colours as $colour)
{
echo $colour->Colour;
echo "<br>";
echo $colour->RGB;
echo "<br>";
$im = imagecreatefrompng("IMAGE_URL");
if($im && imagefilter($im, IMG_FILTER_COLORIZE, $colour->RGB))
{
echo "Image successfully shaded {$colour->Colour}.";
imagepng($im, "images/Convert/IMAGENAME-{$colour->Colour}.png");
imagedestroy($im);
}
else
{
echo "{$colour->Colour} shading failed.";
}
echo "<br>";
}
有人可以建议为什么$ colour-&gt; RGB会在回声上正确显示而不是在&#34; if($ im&amp;&amp; imagefilter($ im,IMG_FILTER_COLORIZE,$ colour-&gt; RGB)) &#34;
答案 0 :(得分:0)
Per the docs RGB颜色值需要作为单独的参数提供:
list($red,$green,$blue) = explode(',', $colour->RGB);
imagefilter($im, IMG_FILTER_COLORIZE, $red, $green, $blue);
答案 1 :(得分:-1)
http://php.net/manual/en/function.imagefilter.php
从手动COLORIZE过滤器需要单独的R G B值。你正在传递字符串。
转换imagefilter($ im,IMG_FILTER_COLORIZE,$ colour-&gt; RGB)
到
$ rgb = explode($ color-&gt; RGB); imagefilter($ im,IMG_FILTER_COLORIZE,$ rgb [0],$ rgb [1],$ rgb [2]);