我有一個顏色UIColor(displayP3Red: 1, green: 0, blue: 0.8, alpha: 1)
。我想創建一個不飽和的版本 - 具有相同的色調和亮度,但較少的飽和度,如原始飽和度的一半。我該怎麼做呢?如何創建Display P3顏色的不飽和版本?
1
A
回答
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)
}
}
這工作,因爲第e getter在擴展的sRGB色彩空間中返回HSB,而UIColor的初始化程序也在擴展的sRGB色彩空間中獲取HSB。所以我們不需要做任何色彩空間轉換。
0
考慮到您可以計算DCI-P3的歸一化主矩陣(NPM),它應該很簡單:NPM的中間一行代表亮度因子。我將舉例說明這一點使用Colour,它假設你正在使用線性值:
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
隨着Ÿ代表您給出顏色的亮度,如果你想在50%飽和度,你可以做這樣的事情:
線性插值(RGB,[Y,Y,Y],0.5)
相關問題
- 1. 圖像顏色飽和度
- 2. Bootstrap Alerts顏色飽和度
- 3. 確定顏色飽和度的問題
- 4. 如何去色飽和度?
- 5. 用sass mixin增加顏色飽和度
- 6. 如何在cocos2d中創建色調(飽和度)選取器
- 7. 如何隨機生成完全飽和的顏色?
- 8. 如何在libgdx中指定色調,飽和度和亮度的顏色
- 9. Android:使用色調,飽和度和亮度定義顏色
- 10. 懸停時的顏色不飽和圖像並在鼠標懸停時再次去飽和html5 css3
- 11. 從Photoshop到iOS的顏色特定色相/飽和度
- 12. 如何爲PagerTitleStrip創建兩種不同的文本顏色?
- 13. 如何用圖像,文本和兩種顏色創建按鈕?
- 14. 如何爲打印版本定義元素的顏色和背景顏色
- 15. 顏色分析 - 飽和度,色度,溫暖,酷等
- 16. 手寫筆顏色轉換功能(色調,飽和度)
- 17. 如何創建顏色列表中的所有顏色?
- 18. 如何在.NET中使用ColorMatrix來更改亮度,顏色,飽和度,色調
- 19. 如何在Bootstrap版本4中更改鏈接顏色和懸停顏色?
- 20. UIColor飽和度亮度值與顏色的常規飽和度亮度值不同
- 21. gnuplot pdfcairo色彩飽和度
- 22. iOS - 將顏色飽和度的PDF結果轉換爲
- 23. ,添加什麼顏色和alpha以創建所需的顏色?
- 24. 如何獲取QML中不透明的顏色版本?
- 25. 橙色的色調/飽和度值
- 26. 如何在創建字體顏色後更改字體顏色
- 27. 本地和shinyapps.io版本的R之間的顏色不同Shiny應用程序
- 28. 如何創建Kakoune顏色格式?
- 29. 如何創建RBG顏色數組?
- 30. 如何創建漸變顏色
有沒有辦法在iOS中做到這一點?謝謝。 –
很可能,你真正需要的是能夠做點積和線性插值。 –
順便說一句,Python發出一個錯誤,指出在導入顏色中找不到顏色。我必須安裝哪些MacPorts模塊?我正在使用Python 3.6。我已經安裝了numpy,因爲那也是一個錯誤。謝謝。 –