Сначала преобразуйте в RGB, если это еще не сделано.
Тогда, например, для #400080
вы можете сказать «64 части красного + 128 частей синего».
Затем вычислите наибольший распространенный демонизатор из числа полученных чисел (здесь простая математика)
Разделите все числа на этот GCD.
В этом примере GCD равен 64, поэтому результат равен «1 часть красного + 2 части синего».