Поиск соотношения для умножения значений RGB на получение нескольких оттенков цвета в Python
Я пытаюсь создать функцию для расчета оттенка на основе заданного значения RGB и заданного количества оттенков. Таким образом, пользователь предоставит значение rgb, например (100,200,150), а также количество оттенков, которые он хочет напечатать. Затем программа распечатает столько цветов первым напечатанным цветом, который будет заданным цветом, а затем каждый цвет станет ярче, пока не достигнет белого (255 255 255).
Например: пользовательский ввод: красный = 255, зеленый = 0, синий = 0 и numTints = 5
Это напечатает: красный, яркий красный, яркий красный, яркий красный, белый
Пользователь может ввести сколько угодно оттенков.
Я понимаю, что мне нужно умножать каждое значение rgb на константу, большую единицы, пока каждое значение не достигнет 255. Мне нужна помощь в том, как найти эту константу, на которую нужно умножить каждое значение.
1 ответ
Сначала создайте функцию, которая принимает два целых числа и возвращает числа, расположенные равномерно между ними. Затем примените эту функцию к каждому из ваших красных, синих и зеленых каналов ваших цветов.
"""returns a list of length `size` whose elements are evenly distributed between start and end"""
def interpolate(start, end, size):
delta = float(end - start) / (size-1)
return [start + i*delta for i in range(size)]
def interpolate_color(start, end, size):
red = interpolate(start[0], end[0], size)
green = interpolate(start[1], end[1], size)
blue = interpolate(start[2], end[2], size)
return zip(red, green, blue)
start = (100,200,150)
end = (255,255,255)
for c in interpolate_color(start, end, 5):
print c
Результат:
(100.0, 200.0, 150.0)
(138.75, 213.75, 176.25)
(177.5, 227.5, 202.5)
(216.25, 241.25, 228.75)
(255.0, 255.0, 255.0)