在石英2D中,CGColorSpaceCreateLab()
函數採用限定的range
參數如下:Quartz 2D:CGColorSpaceCreateLab:範圍參數的用途?
CGFloat的範圍[4]: 4個數字的數組,它指定有效的值的範圍爲a *和b *色彩空間的組件。 a *組件表示從綠色運行到紅色的值,而b *組件則表示從藍色運行到黃色的值。
問題是,這個參數實際上是什麼做?
我能想到至少三種可能的情況。
選項1:也許縮放分量值
說我有兩種顏色空間具有不同範圍:
CGFloat range1[] = { -10, 10, -10, 10 };
CGFloat range2[] = { -100, 100, -100, 100 };
CGColorSpaceRef space1 = CGColorSpaceCreateLab(whitePoint, blackPoint, range1);
CGColorSpaceRef space2 = CGColorSpaceCreateLab(whitePoint, blackPoint, range2);
我創建具有相同的元件值和規定範圍內的色彩每個空間:
CGFloat components[] = { 50, 10, 10, 1 };
CGColorRef color1 = CGColorCreate(space1, components);
CGColorRef color2 = CGColorCreate(space2, components);
做color1
和color2
表示叔他是同一種顏色?還是range
參數以某種方式縮放組件,使這兩種不同的顏色? (如果range
後者,什麼樣的價值對應於標準CIELAB協調縮放
選項2:也許是剪輯元件值
鑑於兩個空格以上定義,說我創建下列顏色代替:
CGFloat components[] = { 50, 50, 50, 1 };
CGColorRef color1 = CGColorCreate(space1, components);
CGColorRef color2 = CGColorCreate(space2, components);
現在做color1
和color2
代表相同的顏色抑或是range
參數夾的color1
爲{50組件? ,10,10,1}? (如果後者有什麼意義?色域定義的極其粗略的近似值?確保數值保持在與另一種數據類型兼容的範圍內?)
選項3:可能在其他地方使用它,例如進行色域映射時具有感知渲染意圖
對L * a * b *值的期望範圍有一些想法可能有助於色域映射,特別是在感知情況下,但是再次,這似乎是這樣的粗略近似:I不明白爲什麼它會特別有用。
選項4:還有別的嗎?