Шестнадцатеричные цвета состоят из 6 шестнадцатеричных цифр. Первые две цифры относятся к красному оттенку, вторые две — к зеленому, а последние две — к синему. В оттенках 00 означает отсутствие цвета, а FF – максимальное значение цвета. Таким образом, #FF0000 будет ярко-красным без зеленого и синего, а #00CCFF будет очень синим и немного зеленым без красного.
Примеры цветов, которые вы приводите, на самом деле имеют разный состав: красный, зеленый и синий. #66CC00 в основном зеленый с небольшим количеством красного, а #99FFCC в основном зеленый с небольшим количеством синего и красного.
Вы должны разбить свои цвета на их красный, зеленый и синий компоненты, прежде чем преобразовывать их в десятичные числа, усреднить два, а затем преобразовать обратно:
#66 CC 00 -> 102 204 0
#99 FF CC -> 153 255 204
Среднее между двумя: 128 230 102: #80E666
Найдя промежуточный цвет, вы можете приблизиться к ближайшему безопасному веб-цвету: #99FF66.
Преобразователь между шестнадцатеричным и десятичным числом, чтобы сделать это самостоятельно, можно найти здесь.
Вот скрипт PHP, который делает то, что вам нужно. Вот сценарий JavaScript, основанный на методе, описанном выше (связанный hex to десятичное преобразование в JS):
color1 = "#66CC00";
color2 = "#99FFCC";
r1 = parseInt(color1.substring(1,3), 16);
g1 = parseInt(color1.substring(3,5), 16);
b1 = parseInt(color1.substring(5,7), 16);
r2 = parseInt(color2.substring(1,3), 16);
g2 = parseInt(color2.substring(3,5), 16);
b2 = parseInt(color2.substring(5,7), 16);
r3 = (Math.round((r1 + r2)/2)).toString(16);
g3 = (Math.round((g1 + g2)/2)).toString(16);
b3 = (Math.round((b1 + b2)/2)).toString(16);
color3 = "#" + r3 + g3 + b3;
person
Trey Hunner
schedule
24.04.2010