Поиск соотношения для умножения значений 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)
Другие вопросы по тегам