0

テンプレートサイトを制作しています。クライアントが青、緑、または紫の見出しを選択した場合、画像のさまざまなカラー バリエーションをすべて保存する必要はありません。プログラムで色相を変更したい。テクスチャやベベルが削除されるため、「塗りつぶし」はしたくありません。

たとえば、あなたが見ているページは、まさに私が望んでいたことを達成しました。 http://sta.oursitesbetter.com/test/index.php

Imagick modulateImage 関数を使用してこれを行いました。

ただし、RGB値ではなく、ランダムな「色相」値をスローしているだけです。RGB値を供給して、これと同じことを達成したいと考えています。modulateImage に似た関数が必要ですが、値として RGB を取り、画像をその色相に設定する必要があります。

過去 5 時間勉強しましたが、やり方がわかりません。私は助けが必要です。

StackOverflow の教祖の中に、この色の問題に対する PHP Imagick ソリューションを持っている人はいますか?

4

2 に答える 2

1

ウィキペディアから: Hue #Computing hue from RGB :

\tan h_{Preucil\hexagon} = \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

もう 1 つのオプションは、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 に答える