Colors 在许多十六进制颜色中找到最多彩的颜色

Colors 在许多十六进制颜色中找到最多彩的颜色,colors,ios7,Colors,Ios7,为了生成网页的动态配色方案,我从图像中读取主色调。这些颜色包括一些非常深和一些非常浅的颜色。所有这些都不能很好地作为配色方案的基础 我需要从一组颜色中选择最多彩/饱和的颜色。 我看过HSL值,并考虑使用S和L值最高的,但这也会给我一些非常“脏”的颜色 有没有解决这个问题的好办法?不知何故,这似乎是IOS7从专辑艺术中选择颜色的方式 谢谢你的帮助 您最好使用HSL转换和自定义映射,以避免任何您不想要的色调: CGFloat hue; // in degrees, [0,360) NSArray u

为了生成网页的动态配色方案,我从图像中读取主色调。这些颜色包括一些非常深和一些非常浅的颜色。所有这些都不能很好地作为配色方案的基础

我需要从一组颜色中选择最多彩/饱和的颜色。 我看过HSL值,并考虑使用S和L值最高的,但这也会给我一些非常“脏”的颜色

有没有解决这个问题的好办法?不知何故,这似乎是IOS7从专辑艺术中选择颜色的方式


谢谢你的帮助

您最好使用HSL转换和自定义映射,以避免任何您不想要的色调:

CGFloat hue; // in degrees, [0,360)
NSArray undesirableHueRanges = @[NSMakeRange(25, 20), NSMakeRange(180, 20)]; // e.g., you don't want colors with hues between 25º to 45º and 180º to 200º

for (NSRange undesirableRange in undesirableHueRanges) {
    if (hue > undesirableRange.location && hue < NSMaxRange(undesirableRange)) {
        if (hue > undesirableRange.location + 0.5 * undesirableRange.length) {
            hue = NSMaxRange(undesirableRange);
        } else {
            hue = undesirableRange.location;
        }
    }
}
CGFloat色调;//以度为单位,[0360)
NSArray UndersirableHueranges=@[NSMakeRange(25,20),NSMakeRange(180,20)];//例如,您不希望颜色的色调介于25º到45º和180º到200º之间
for(NSRange UndersirableHueranges中的UndersirableRange){
如果(色调>不受欢迎的范围。位置和色调不受欢迎的范围.位置+0.5*不受欢迎的范围.长度){
色调=NSMaxRange(不理想的范围);
}否则{
色调=不受欢迎的范围。位置;
}
}
}
别忘了在大多数Mac应用程序(包括Xcode)中使用内置的颜色选择器来播放不同的颜色模式:

你说的“脏”色是什么意思?你是说棕色吗?答案是Thx!所以你的策略也是选择S和L值最高的颜色?是的,选择最强烈的颜色使用最高的S和L,然后使用H值作为我答案中代码段的色调。为了获得统一的外观,您可以使用常量替换S和L,以保持连续性,无论使用何种色调(例如,100%L和50%S).我可以建议使用另一个颜色空间吗?像LAB*这样的颜色空间更直接地反映了我们的需求;请参阅。