Open XMLの色合い効果をエミュレートしようとしています。色相をシフトすることにより、画像内のピクセルの色相を変更します。2 つのパラメータを取ります: 1) hue
(度) と 2) amt
(量、パーセンテージ)。問題があるのは#2です。仕様には次のように記載されています。
色合い: エフェクト カラー値を、指定された量だけ色相に向かって、または色相から遠ざけます。
- amt (量) - 色の値をシフトする量を指定します。
- hue (Hue) - 着色する色相を指定します。
XML 構造を気にせずにamt
、100% の値をエミュレートできます。たとえば、青 (色相: 240°) が必要な場合は、これ (着色されたもの) を作成できます。次に例を示します。
オリジナルと着色(色相 = 240、量 = 100%)。
これは、色相を 240 に設定し、彩度と輝度を同じに保ち、RGB に変換して各ピクセルを書き込むだけで実現できます。
ただし、達成できないことは次のとおりです。
色相 = 240 (青)、量 = 30%、50%、および80%、それぞれ
繰り返しますが、Specify by how much the color value isAmount
shift と言っています。これを機能させるためにここであらゆる種類の方法を試しましたが、うまくいかないようです ( 、など)。hue=hue*amount
originalhue * amount + hue
その他の例: 色相 = 120 (緑)、量 = 30%、50%、80%、および100%。私が得ることができる100%のもの。
上の写真の単一ピクセルの値のリストを次に示します。
Pixel 159、116 - 青の写真
色相量 RGB | HSL オリジナル 244 196 10 | 48 0.92 0.5 青 240 30% 237 30 45 | 356 0.85 0.52 青 240 50% 245 9 156 | 323 0.93 0.5 青 240 80% 140 12 244 | 273 0.91 0.5 青 240 100% 12 12 244 | 240 0.91 0.5
Pixel 159、116 - 緑の写真
色相量 RGB | HSL オリジナル 244 196 10 | 48 0.92 0.5 緑 120 30% 211 237 30 | 68 0.85 0.52 緑 120 50% 159 237 30 | 83 0.85 0.52 緑 120 80% 81 237 29 | 105 0.85 0.52 緑 120 100% 29 237 29 | 120 0.85 0.52
それで、質問は次のとおりです。これがどのように機能するか知っている人はいますか?
注: これは次の複製ではありません。
- 全体の明るさを維持しながらビットマップの色合いを変更する
- C# で ImageAttributes を使用して色相を回転する
- ...または私がSOで見つけることができる他のもの