我有一个颜色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. Bootstrap Alerts颜色饱和度
- 2. 如何随机生成完全饱和的颜色?
- 3. Android:使用色调,饱和度和亮度定义颜色
- 4. 如何为PagerTitleStrip创建两种不同的文本颜色?
- 5. R:减少调色板的颜色饱和度
- 6. 如何用图像,文本和两种颜色创建按钮?
- 7. 颜色分析 - 饱和度,色度,温暖,酷等
- 8. 如何为打印版本定义元素的颜色和背景颜色
- 9. 如何在.NET中使用ColorMatrix来更改亮度,颜色,饱和度,色调
- 10. UIColor饱和度亮度值与颜色的常规饱和度亮度值不同
- 11. ,添加什么颜色和alpha以创建所需的颜色?
- 12. 如何获取QML中不透明的颜色版本?
- 13. 橙色的色调/饱和度值
- 14. 本地和shinyapps.io版本的R之间的颜色不同Shiny应用程序
- 15. 如何创建Kakoune颜色格式?
- 16. 如何从RGB颜色创建位图
- 17. 编辑文本不同的颜色在不同版本的android
- 18. 如何创建颜色和标记的图例?
- 19. Imagemagick去饱和黑色/白色?
- 20. 如何创建不同颜色的小提琴剧情?
- 21. 颜色的“选定”版本是什么
- 22. 如何以编程方式创建图标的“明亮”和“灰色”版本?
- 23. 如何修改UIColor的色调,亮度和饱和度?
- 24. Capistrano不会创建版本
- 25. 如何使用ggplotly为颜色和形状创建图例
- 26. 如何从一组颜色和浮点数创建一个NSGradient?
- 27. CSS创建颜色渐变
- 28. 用颜色创建JButton
- 29. 创建随机颜色(System.Drawing.Color)
- 30. 用UIColor创建颜色
有没有办法在iOS中做到这一点?谢谢。 –
很可能,你真正需要的是能够做点积和线性插值。 –
顺便说一句,Python发出一个错误,指出在导入颜色中找不到颜色。我必须安装哪些MacPorts模块?我正在使用Python 3.6。我已经安装了numpy,因为那也是一个错误。谢谢。 –