2

我一直在寻找一种更快的方法来在我的位图上使用混合效果“相乘”。我试过使用PorterDuff.Multiply,但在包含 Alpha 通道的位图上没有达到预期的效果,任何 0 alpha 的东西都会变成黑色。

我已经阅读过,似乎我可以实现我所追求的效果的唯一方法(photoshop/gimp 的“乘法”图层混合)是通过应用每个像素的效果。

OpenGL 不是应用程序的选项。

我不确定我是否正确理解维基百科建议的混合模式的算法。

TopColour * BottomColour / 255

将会:

ColorC.R = ColorA.R * ColorB.R / 255;
ColorC.G = ColorA.G * ColorB.G / 255;
ColorC.B = ColorA.B * ColorB.B / 255;
// Alpha = Alpha?

// This example is suggesting Android.Graphics.Color.A/R/G/B is writeable, 
// it's not - this is just for readability.
// ColorA = Top, ColorB = Bottom, ColorC = Result

转换Color.ToArgb和使用整数会更快吗?最后,我是否正确计算了乘法效果 - 它没有正确显示:(

我被卡住了,任何帮助将不胜感激。

谢谢你。

4

1 回答 1

0

如果你想要快速,你需要查看 Renderscript,http://developer.android.com/guide/topics/renderscript/index.html

这段来自 Google 的视频也或多或少地向您展示了您需要的一切,http://www.youtube.com/watch?v=gbQb1PVjfqM(Google IO 2012 - 事半功倍:成为一名优秀的 Android 公民)。

于 2012-09-28T08:55:54.740 回答