2017-03-31 12 views

答えて

0
extension UIColor {  
    // Calling this with 0.5 as argument returns a color whose saturation is 50% of that of the receiver. 
    func desaturatedBy(fraction: CGFloat) -> UIColor { 
    var hue: CGFloat = 0 
    var saturation: CGFloat = 0 
    var brightness: CGFloat = 0 
    var alpha: CGFloat = 0 
    let success = getHue(&hue, saturation: &saturation, brightness: &brightness, alpha: &alpha) 
    assert(success) 

    saturation *= fraction 

    return UIColor(hue: hue, saturation: saturation, brightness: brightness, alpha: alpha) 
    } 
} 

これは動作番目ためgetterは拡張sRGBカラースペースでHSBを返し、UIColorのイニシャライザも拡張sRGBカラースペースでHSBをとります。したがって、色空間変換を行う必要はありません。

0

DCI-P3の正規化プライマリマトリックス(NPM)を計算することができれば簡単です。NPMの中央の行は輝度係数を表します。あなたはそのような何かを行うことができ、50%で不飽和化したい場合は、あなたの特定の色の輝度を表すY

import numpy as np 
import colour 

# Computing the sRGB Luminance Equation, you should be familiar with the 
# resulting Luminance factors. 
print(colour.RGB_luminance_equation(
    colour.sRGB_COLOURSPACE.primaries, 
    colour.sRGB_COLOURSPACE.whitepoint)) 
# Y = 0.212639005872(R) + 0.715168678768(G) + 0.0721923153607(B) 

# Computing the DCI-P3 Luminance Equation. 
print(colour.RGB_luminance_equation(
    colour.DCI_P3_COLOURSPACE.primaries, 
    colour.DCI_P3_COLOURSPACE.whitepoint)) 
# Y = 0.209491677913(R) + 0.721595254161(G) + 0.0689130679262(B) 

# Computing Luminance of given RGB colour, this is assuming it is representing linear values. 
DCI_P3_LUMINANCE_FACTORS = np.array([0.209491677913, 0.721595254161, 0.0689130679262]) 
RGB = np.array([1.0, 0.0, 0.8]) 
Y = np.dot(RGB, DCI_P3_LUMINANCE_FACTORS) 
print(Y) 
# 0.264622132254 

:私はそれはあなたが、リニアの値を使用していることを前提とし、Colourを使用してこのことを説明します:

lerp(RGB、[Y、Y、Y]、0.5)

+0

iOSでこれを行う方法はありますか?ありがとう。 –

+0

本当に必要なのは、ドット積と線形補間を実行できることです。 –

+0

ところで、Pythonは色がインポートカラーで見つからないというエラーを出力します。どのMacPortsモジュールをインストールする必要がありますか?私はPython 3.6を使用しています。それはあまりにもエラーを与えていたので、私はすでにnumpyをインストールしました。ありがとう。 –

関連する問題