мне удалось генерировать случайные шестнадцатеричный цвет из строки:сделать цвет краски гекса выглядит более интенсивным
function StringToColorFilter() {
var hashString = function (chaine) {
var hash = 0, i, chr, len;
if (chaine.length == 0)
return hash;
for (i = 0, len = chaine.length; i < len; i++) {
chr = chaine.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash |= 0; // Convert to 32bit integer
}
return hash;
};
return function (chaine) {
return "#" + ("FFFFFF" + Math.abs(hashString(chaine) % 16777216).toString(16)).substr(-6);
};
}
Пример:StringToColorFilter()("MyString")
=>#393303
(не везло этот цвет Suxx)
Итак, сейчас:
- Я хочу избежать белым, мягким, поседения или бледных цветов
- Я хочу генерировать только интенсивный/сильный/красочного цвет
Я первый попытался удалить один компонент (красный, зеленый, или синий) или два, но это удаляет слишком много возможностей, и я все еще могу иметь уродливые цвета.
Затем я попытался удалить значения экстремума (F/E и 0/1). Но я все еще могу быть серым.
Некоторые идеи алгоритма?
Для интенсивного цвета вам может потребоваться преобразовать его в цветовое пространство «HSV» или «HSL», которое представляет компоненты хром, интенсивность и насыщенность отдельно. Таким образом, вы можете легче управлять насыщенностью и интенсивностью цвета. –
Действительно! Хорошая идея ! =) –
FYI, переход от 'RGB' к' HSV' назад и вперед может стоить некоторой потери в некоторой степени. Возможно, вам также придется об этом знать. –