想象一下,我們有兩種ARGB顏色c1和c2。「100%紅色時爲50%藍色」與「100%藍色時爲50%紅色」
背景c2上的50%(alpha)c1與背景c1上的50%c2有什麼區別?
使用公式out = alpha * new + (1 - alpha) * old
(來自another thread),兩者都將具有相同的結果:
50% blue on 100% red = 0.5 * blue + (1 - 0.5) red = 0.5 * blue + 0.5 red
100% red on 50% blue = 0.5 * red + (1 - 0.5) blue = 0.5 * red + 0.5 blue
thus, 50% blue on 100% red = 100% red on 50% blue
然而,Photoshop CS5聲稱 「100%藍色50%的紅色」 是100 #80007f
和「50%的藍色%red「是#7f0080
。
因此,我想知道的是上述算法只適用於簡單真實逼近?
是否有另一個公式給我們更真實的結果?(由於Adobe是相當上有圖形方面,我會覺得這件事不太可能,他們曾經做過這樣一個簡單的四捨五入誤差)
不是一個真正的編程問題... –
@OliCharlesworth,用於顯示的RGB顏色在真實世界中不存在。它們只與電腦有關。程序員是否應該將100%的紅色與100%的藍色的50%的紅色相比呈現50%的藍色? – Pacerier
你爲什麼對結果感到驚訝?帶有藍色覆蓋層的紅色背景與帶有紅色覆蓋層的藍色背景不同。例如,如果兩者都具有50%的透明度,結果將是相同的。如果藍色超過紅色,則基於透明度 - 如果不透明度較低,則會顯示更多紅色。另一種方式會顯示更多的藍色。這與使用帶有藍色或紅色疊加層的白色背景相似。他們看起來不一樣,因爲他們的透明度都是50%... –