vid*_*ige 1 java android pixel bitmap
假设我想创建一个像素值数组,以传递到此处createBitmap描述的方法中.我在0 - 0xff范围内有三个int值.如何将它们转换为不透明像素?r, g, bp
alpha通道是进入高字节还是低字节?
我搜索了文档,但它只说明:
每个像素存储在4个字节上.每个通道(RGB和alpha为半透明)以8位精度(256个可能的值)存储.这种配置非常灵活,并提供最佳质量.应尽可能使用它.
那么,如何编写这个方法呢?
int createPixel(int r, int g, int b)
{
return ?
}
Run Code Online (Sandbox Code Playgroud)
mae*_*ics 11
看起来像RGBA像素格式已经很好地记录了,我假设这是Android文档的意思,只是使用不同的名称来匹配位字段中的通道成员位置:

这样的事情应该有效:
int createPixel(int r, int g, int b) {
return createPixel(r, g, b, 0xff);
}
int createPixel(int r, int g, int b, int a) {
return (a<<24) | (r<<16) | (g<<8) | b;
}
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望使用a byte而不是a int来避免溢出类型错误,或仅屏蔽所需的位:
int createPixel(int r, int g, int b, int a) {
return ((a & 0xff) << 24)
| ((r & 0xff) << 16)
| ((g & 0xff) << 8)
| ((b & 0xff));
}
Run Code Online (Sandbox Code Playgroud)
尽管将值限制在一起[0,255]可能更有意义.