NDK(C)处理Bitmap后,使用getPixels获取的pixel值为0

想了半天不知道怎样命名标题,暂时就这么叫

情况是这样:

因项目上需要对图片进行相对复杂的处理,我就选择了用c去处理;

C的处理我是给了两个参数,一个input Bitmap,一个output Bitmap
代码(1)

JNIEXPORT void JNICALL Java_com_babypic_util_ImageFilters_filter(JNIEnv* env,jobject* self,jobject inBitmap,jobject outBitmap,jint mode);

然后java端,input Bitmap给的原图的Bitmap,output Bitmap是新创建的一个Bitmap,具体创建方式是这样的:
代码(2)

//创建输出Bitmap
Bitmap outBitmap = Bitmap.createBitmap(original.getWidth(), original.getHeight(), original.getConfig());
//调用native方法
ImageFilters.filter(original,outBitmap, mode.getValue());

在代码(2)处理完后,我使用outBitmap.getPixels(pixels, 0, mWidth, 0, 0, mWidth, mHeight) 获取outBitmap的pixels,
结果发现pixels的值全部为0;

但我使用一个Imageview 将outBitmap显示出来有是正确的,显示的效果是C处理后的效果,按照pixels的值为0的的道理去推,那么Imageview应该显示的是一块黑色,但没有;

不知道为什么pixel获取的值是0.

我暂时将创建output Bitmap的方式换了下

int pixels [] = new int[original.getWidth() * original.getHeight()];
original.getPixels(pixels, 0, original.getWidth(), 0, 0, original.getWidth(), original.getHeight());
Bitmap tBitmap = Bitmap.createBitmap(pixels, original.getWidth(), original.getHeight(), original.getConfig());

就这样,现在使用outBitmap.getPixels(pixels, 0, mWidth, 0, 0, mWidth, mHeight)获取的pixel的值就正确了,至于原因还不知道。

 

 

你可能感兴趣的:(c,bitmap,NDK,0,pixels)