2011-05-05 90 views
4

我正在處理的這個算法的目標是從某些提供的顏色中輸出顏色進度。通過顏色漸變,我的意思是在兩種顏色(顏色A,顏色B)之間創建「淡入淡出」效果,並在其間存儲每個顏色值((R,G,B)元組)。如何從調色板中創建顏色進程

例如,如果所提供的是全黑A = (0,0,0)和總白色B = (255,255,255)進展結果將是:

P = ((0,0,0),(1,1,1),(2,2,2), .... ,(253,253,253),(254,254,254),(255,255,255)

使我們獲得在第一白,它逐漸變成黑色。當然,使用白色和黑色很容易(每次增加RGB一次255次)。但是如果我想用兩種任意顏色來做這個過程,比如A =(180,69,1)和B =(233,153,0)?

重要提示:如果使用十六進制(或任何其他類型的顏色符號),它會更容易實現,我也可以使用它,只需指定哪種類型(考慮到我正在使用PIL Python成像庫),所以如果它與我很好)

顯然它必須是一個儘可能均勻的分佈,進展必須是均勻的。

我需要弄清楚這個算法,以便我可以在我的分形生成器中使用它(Mandelbrot Set,如果你願意的話,可以google),所以重要的是儘可能柔和,不要打嗝。

在此先感謝。

回答

2

將您的RGB座標轉換爲HSL或HSV並逐步遍歷它們,一路轉換回RGB。

+0

http://docs.python.org/library/colorsys.html http://en.wikipedia.org/wiki/HSL_and_HSV – 2011-05-05 17:57:02

+0

非常感謝! :D – 2011-05-05 18:18:03

+0

我有一個問題。我不知道如何在HSL和HSV顏色之間切換:/ – 2011-05-05 23:14:25

0

我只是插值的RGB值獨立。請參閱thread

0

我對標題爲Range values to pseudocolor的SO問題的回答可能對您有所幫助,因爲它顯示了一種生成特定顏色漸變(您稱爲顏色漸變的常用名稱)的方法。

通常情況下,您可以通過計算每種顏色成分之間的差異或增量值,在任何顏色空間中的任何兩種顏色之間進行插值,然後將這些值除以期望獲得每個成分的小數增量量的中間步數在每一步之後申請。

然後,從每個第一顏色分量的值開始,相應的分數量可以疊加到它上面以確定每個中間階躍顏色。或者,通過將(step_number/total_steps) * fractional_delta添加到起始顏色的初始顏色分量值,可以減小該方法固有的算術誤差。

我相信@Jim Clay在他的回答中也是這樣說的。如果您想要一些示例代碼,請在評論中說明。

0

我推薦與Jim Clay相同的問題,但是從the top讀取。或參閱關於interpolation的維基百科。