Создание градиента цвета в 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)) 
  • Преобразование изображения PIL в GTK Pixbuf
  • Не удается получить PIL для правильной установки на Ubuntu 12.04
  • Прямоугольная ограничивающая рамка вокруг блобов в монохромном изображении с использованием python
  • Как я могу быстрее перебирать пиксели изображений в python?
  • Tkinter & PIL Изменить размер изображения на этикетке
  • Вставить изображение в круговую диаграмму
  • Django и динамически генерируемые изображения
  • IOError: «декодер zip недоступен» с использованием matplotlib PNG в ReportLab для Linux, работает в Windows
  • Ошибка при рисовании QImage на виджет с PIL и PyQt
  • Как уменьшить палитру изображений до определенных цветов?
  • Изображение.show () не отображает изображение
  • Python - лучший язык программирования в мире.