我正在为android编写一个高斯滤波器。
根据本教程的 GaussFilter 示例:http ://www.jhlabs.com/ip/blurring.html我正在像这样编辑我的 ALPHA 值
alpha += f * ((pixelValue >> 24) & 0xff);
根据这个线程: 对RGB值使用逻辑位移
(pixelValue >>24 & 0xff);
不等于
Color.alpha(pixelValue);
据我所知,Alpha 通道在 RGB 中是可选的。所以这取决于我阅读和编辑 alpha 和 rgb vlaues 的深度。
有很多不同颜色深度的组合,例如:
- 4位无alpha
- 4 位 + 4 位阿尔法
- 24 位,包括 alpha (?)
- Macintosh 提供 24 位加(或包括?) 8 位 alpha
由于我不知道用户想要处理哪种类型的图像,所以我必须捕获所有组合。我只是使用 Color.Red(value), Color.Green(value) ...但我不确定这最终是否会太慢?我可以在处理之前将每个输入转换为 24 位位图,但这会花费太长时间。
任何帮助表示赞赏,谢谢。