0

我创建模板网站。如果客户选择蓝色或绿色或紫色标题,我不想存储图像的所有这些不同颜色的变化。我想以编程方式更改色调。我不想“填充”它,因为这会删除任何纹理或斜面。

例如你看到的页面我已经完成了我想要的。 http://sta.oursitesbetter.com/test/index.php

我已经使用 Imagick modulateImage 函数完成了这项工作。

但是,我只是在抛出随机的“色调”值而不是 RGB 值。我想完成同样的事情来提供 RGB 值。我需要一个类似于 modulateImage 的函数,但是它必须将 RGB 作为值并将图像设置为该色调。

我已经学习了过去 5 个小时,但不知道该怎么做。我需要帮助。

StackOverflow 的大师们有没有为这个颜色难题提供 PHP Imagick 解决方案?

4

2 回答 2

1

来自维基百科:色调#从 RGB 计算色调

\tan h_{Preucil\ 六边形} = \frac{\sqrt{3}\cdot (G - B)}{2\cdot R - G - B}

$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);
于 2010-09-07T01:17:49.717 回答
0

另一种选择可能是使用 ImageMagick 以您想要的 RGB 颜色创建单个像素图像,然后查看 ImageMagick 在 HSL 颜色空间中的效果。假设您的 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 中访问像素。

于 2014-11-27T09:43:58.183 回答