2012-03-10 13 views
1

在Photoshop中,您可以將圖層的混合模式設置爲「色調」。例如,如果該圖層填充了藍色,則該圖層看起來會佔據下面的圖層,並且只要存在非白色顏色,就會將其全部顯示爲藍色。以編程方式,photoshop中的色調混合是如何工作的?

我想知道它實際上在做什麼。如果我有一個帶有像素aarrggbb的背景圖層,並且頂層的圖層被設置爲混合模式「Hue」,並且該圖層上有一個像素aarrggbb,那麼這兩個值如何組合以給出我們看到的結果?

它不只是從下面的圖層中刪除rrggbb。如果這樣做,它也會變成白色和黑色。它也不允許通過顏色變化。

如果背景像素是0xff00ff00,並且對應的色相層像素是0xff0000ff,那麼我假設最終結果將只是0xff0000ff,因爲ff藍色會替換ff綠色。但是,如果背景像素是0x55112233而色調層像素是0xff0000ff,它是如何產生它所呈現的藍色陰影的?

我問的原因是我想拍攝各種圖像,並在我的應用程序中以編程方式更改圖像的色調。我不想用不同的顏色存儲8個不同版本的相同圖像,我想存儲一個圖像並根據需要着色。

回答

0

我一直在研究一種方法來在JavaScript/canvas中複製混合模式,但我只想出了「着色」過濾器/混合模式。 (下面的實施例)

彩色化算法:

  1. 從RGB轉換顏色HSL;
  2. 將Hue值更改爲想要的值(在我的情況下爲172⁰或0.477);
  3. 恢復更新HSL爲RGB

注:這是在桌面上確定,但很明顯慢於智能手機,我發現。

您可以通過比較這三幅圖像來看出區別。原文:

original image

彩色化:

result with my algorithm

煙花 「混合色調」 算法(我認爲是一樣的Photoshop的):

Fireworks "blend hue" algorithm

的着色過濾器可能是一個很好的替代品。

RGB/HSL conversion question

Hue/Chroma and HSL on Wikipedia

相關問題