我想在 Android 应用程序中制作立体 3-D 图像。为此,我需要删除图像的蓝色或绿色通道。
我怎样才能在安卓上做到这一点?
我假设您有一个表示为 AndroidBitmap
对象的图像。要“禁用”颜色通道,您只需将通道的像素值设置为零,这意味着它不再对图像有贡献。这是一个简单的方法:
Bitmap bitmap = ... //Assuming you have a bitmap somehow
for (int x = 0; x < bitmap.getWidth(); x++) {
for (int y = 0; y < bitmap.getHeight(); y++) {
bitmap.setPixel(x, y, bitmap.getPixel(x, y) & 0xFFFF0000);
}
}
这里要理解的关键部分是这里的位图颜色由一个四字节整数表示;第一个字节是 alpha(透明度)值,第二个字节是红色通道值,第三个是绿色,第四个是蓝色。因此,十六进制值0xFFFF0000
表示“最大 alpha”(因为FF
是最大字节值)、“最大红色”、“零绿色”和“零蓝色”。
然后,我使用运算符对旧像素值执行按位与运算,用作我的掩码。这基本上“选择”了红色值并忽略了蓝色和绿色,给出了一个仅包含红色通道的新像素值。0xFFFF0000
&
您可以对其他频道做类似的事情;如果您只想要蓝色通道,如果您正在制作立体图像,您可能会使用蒙版0xFF0000FF
,如果您只想要绿色通道,您可以使用0xFF00FF00
。
顺便说一句,我不完全确定这是创建立体图像的最佳方法,但它可能仍然有效 - 尽管如此,这是您实际问题的答案:)