我想通过jni将格式为Bitmap.Config.ARGB_8888的位图更改为透明。
#define MAKE_RGBA(r,g,b,a) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))
...
AndroidBitmapInfo info;
memset(&info, 0, sizeof(info));
AndroidBitmap_getInfo(env, bitmap, &info)
int res = AndroidBitmap_lockPixels(env, bitmap, &pixels);
int tr = 0, tg = 0, tb = 0, ta = 0;
int width = info.width;
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
void *pixel = ((uint32_t *)pixels) + y * width + x;
*((uint32_t *)pixel) = MAKE_RGBA(tr, tg, tb, ta);
}
}
AndroidBitmap_unlockPixels(env, bitmap);
我从应用程序中读取了一个像素:
int value = paintBitmap.getPixel(0, 0);
int r = (value & 0x00ff0000)>>16;
int g = (value & 0x0000ff00)>>8;
int b = value & 0x000000ff;
int a = (value & 0xff000000)>>24;
但我得到的值是-16777216和alpha -1,变换的位图是全黑的。
我该如何解决这个问题?谢谢!