Создание градиента цвета в Python

У меня есть список цветов RGB и нужно рисовать градиент между ними в python. Есть ли у вас какие-либо предложения, как сделать это в библиотеке PIL?

EDIT: Я понимаю:

def gradient(list_of_colors): width = 600 height = 480 img = Image.new("RGB", (width, height)) draw = ImageDraw.Draw(img) for i in range(len(list_of_colors)): r1,g1,b1 = list_of_colors[i] for x in range(width/len(list_of_colors)): colour = (r1,g1,b1) draw.line((x+(width/len(list_of_colors)*i), 0, x+(width/len(list_of_colors)*i), height), fill=colour) img.show() gradient([(30, 198, 244), (99, 200, 72),(120, 50, 80),(200, 90, 140)]) 

и это нарисовало меня: http://img59.imageshack.us/img59/1852/3gba.png

Мне просто нужно сделать это градиентом между этими цветами, а не полосами цветов. (что-то вроде этого) http://www.kees-tm.nl/uploads/colorgradient.jpg

One Solution collect form web for “Создание градиента цвета в Python”

Я думаю, что такой код будет работать, он использует Linear Interpolation для создания градиента.

 list_of_colors = [(30, 198, 244), (99, 200, 72),(120, 50, 80),(200, 90, 140)] no_steps = 100 def LerpColour(c1,c2,t): return (c1[0]+(c2[0]-c1[0])*t,c1[1]+(c2[1]-c1[1])*t,c1[2]+(c2[2]-c1[2])*t) for i in range(len(list_of_colors)-2): for j in range(no_steps): colour = LerpColour(list_of_colors[i],list_of_colors[i+1],j/no_steps) 

Очевидно, я не знаю, как вы рисуете градиент, поэтому я оставил его открытым для вас, сделайте то, что вам нравится, с помощью цветовой переменной, чтобы рисовать каждый шаг градиента в цикле for. 🙂

Кроме того: я не понимаю, как формируется список, поэтому, если кто-то может улучшить функцию LerpColour, чтобы ее использовать, отредактируйте мой пост 🙂

EDIT – создание списка, который можно легко повторить при рисовании с помощью PIL:

 gradient = [] for i in range(len(list_of_colors)-2): for j in range(no_steps): gradient.append(LerpColour(list_of_colors[i],list_of_colors[i+1],j/no_steps)) 
Interesting Posts

Кортеж или список при использовании 'in' в предложении 'if'?

вывод на ту же строку, что и предыдущий вывод? python (2.5)

Регулярное выражение Python разбивает строку на один из двух разделителей

Преобразование timedelta64 в секундах в Python Pandas DataFrame

Заполнение Many2many поля (odoo 8)

Должен ли я начать с Python 3.0?

Преобразование строк в pandas dataframe в столбцы

Matplotlib plot_date время сохранения в UTC даже с пользовательским часовым поясом

Эквивалентен методу Seq.scan () F # в Python?

чистое числовое выражение для выбора подмассивов одинаковой длины с разными начальными индексами из трехмерного массива

HTTP-сервер Python 3 отправляет заголовки в качестве вывода

Pyexcel_xlsx успешно установлен, но импорт по-прежнему является синтаксической ошибкой

ImportError: Нет модуля с именем pandas. Pandas установил пип

Удаление всех файлов в каталоге с помощью Python

Каков наилучший способ загрузки файла с помощью urllib3

Python - лучший язык программирования в мире.