我正在处理一些手动(像素移动)图像处理,并且正在重新创建标准的“叠加”混合。我在这里查看“Photoshop Math”宏:
http://www.nathanm.com/photoshop-blending-math/
(See also here可提供更具可读性的Overlay版本)
两个源图像都采用相当标准的RGBA格式(每个8位),目的地也是如此。当两个图像都是完全不透明的(alpha为1.0)时,结果将按预期正确混合:
但是,如果我的“混合”层(顶部图像)具有透明性,那么我对有点困惑,那就是如何正确地将alpha分解到混合方程中。我希望它能正常工作,这样混合层中的透明像素不会对结果产生影响,混合层中的不透明像素会像往常一样进行叠加混合,而半透明混合层像素会对结果产生一定的缩放效果。
有人可以向我解释混合方程式或执行此操作的概念吗?
如果可以帮助我做到这一点,以便使生成的图像正确预乘alpha(我认为,这仅适用于两层都不透明的像素),才能获得奖励积分。
谢谢!
// factor in blendLayerA, (1-blendLayerA) somehow?
resultR = ChannelBlend_Overlay(baseLayerR, blendLayerR);
resultG = ChannelBlend_Overlay(baseLayerG, blendLayerG);
resultB = ChannelBlend_Overlay(baseLayerB, blendLayerB);
resultA = 1.0; // also, what should this be??
最佳答案
只是一个猜测,但我会尝试
resultA = 1 - (1-baseAlpha) * (1-blendAlpha)
关于graphics - 如何在手动 "Overlay"混合操作中处理Alpha?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4689096/