iOS用のカラーピッカーを作成しています。ユーザーが明るさ (輝度) を選択できるようにして、この変更をカラー ホイールに反映させたいと思います。Core Image を使用して、CIColorControls フィルターで明るさを変更しています。これが私のコードです:
-(CIImage *)oldPhoto:(CIImage *)img withBrightness:(float)intensity
{
CIFilter *lighten = [CIFilter filterWithName:@"CIColorControls"];
[lighten setValue:img forKey:kCIInputImageKey];
[lighten setValue:@((intensity * 2.0) - 1.0) forKey:@"inputBrightness"];
return lighten.outputImage;
}
強度 = 0.5 (inputBrightness = 0) でカラー ホイールがどのように見えるかを次に示します。
問題は、強度が 0.5 未満の場合にカラー ホイールが正しく表示されないことです。たとえば、強度 = 0.3 (inputBrightness = -0.4) の場合は次のようになります。
中央に黒い円があり、画像の残りの部分も正しく暗くされていないことに注意してください。これは HSL カラー ホイールのはずなので、実際に変更したいのは明るさではなく輝度だと思います。
まず、画像がこのように見える理由を誰か説明できますか? 私は色の専門家ではありません。円の端があまり暗くならないのに、円の中心がすぐに黒くなるのは奇妙に思えます。
第二に、どうすれば私が望む効果を達成できますか?
これが私が実際に画像をどのように見せたいかです:
これは、カスタム HSL 関数と輝度 = 0.3 で作成されました。これは CPU で実行されるため、私のニーズには遅すぎます。この HSL 関数のコードを投稿できれば幸いですが、すぐには関連性がないように思われたため、含めませんでした。見たい方は直接聞いてください。
ご不明な点やご不明な点がございましたら、お気軽にお問い合わせください。ありがとう!