我创建了模板网站。如果客户选择蓝色或绿色或紫色标题,我不希望存储图像的所有不同颜色变化。我想以编程方式更改色调。我不想'填充'它,因为这会删除任何纹理或斜面。
例如,您看到我完成了我想要的内容。 http://sta.oursitesbetter.com/test/index.php
我使用Imagick modulateImage函数完成了这项工作。
但是,我只是抛出随机的“Hue”值而不是RGB值。我想完成同样的事情来提供RGB值。我需要一个类似于modulateImage的函数,但它必须将RGB作为值并将图像设置为该色调。
我已经研究过去5个小时,但无法弄清楚如何去做。我需要帮助。
StackOverflow的任何大师都有这个颜色窘境的PHP Imagick解决方案吗?
答案 0 :(得分:1)
来自Wikipedia: Hue #Computing hue from RGB:
$hex=(sqrt(3)*($green-$blue)) /
(2*($red-$green-$blue));//$red, $green and $blue are each a value in the range 0->255
$img->modulateImage(100, 100, intval($hex*100/256));
//probably 256->100 value above will work, if didn't , try with the following insead.
//$img->modulateImage(100, 100, $hex);
答案 1 :(得分:0)
另一种选择可能是使用ImageMagick以您想要的RGB颜色创建单个像素图像,然后在HSL颜色空间中查看ImageMagick的内容。假设你的RGB值是25,126,200,你可以这样做:
convert -size 1x1! xc:rgb\(25,126,200\) -colorspace HSL txt:-
# ImageMagick pixel enumeration: 1,1,65535,hsl
0,0: (57.0474%,77.7783%,44.1184%) #920AC71C70F1 hsl(57.0474%,77.7783%,44.1184%)
以下等效方法可能更简洁:
convert xc:rgb\(25,126,200\) -format "%[fx:100*p{0,0}.hue]" info:
57.0476
convert xc:rgb\(25,126,200\) -format "%[fx:100*hue]" info:
57.0476
因此,IM的色调为57.0474%。当然你不需要运行它并解析文本输出,我只是这样做来演示这个概念 - 你可以直接在PHP中访问像素。