想了半天不知道怎样命名标题,暂时就这么叫
情况是这样:
因项目上需要对图片进行相对复杂的处理,我就选择了用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的值就正确了,至于原因还不知道。