通过jni将位图更改为透明但变黑

时间:2018-03-19 04:36:00

标签: android bitmap android-ndk

我想通过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,变换的位图是全黑的。

我该如何解决这个问题?谢谢!

0 个答案:

没有答案