一、概述
在做jni开发的时候,有些情况下会直接通过java/kotlin层传递bitmap给jni,并取出其数据进行利用。
例如:OpenGL ES绘制纹理、保存像素图片等。
二、代码示例
1.在cmake中引入可以操作jni层BitmapInfo的lib
jnigraphics -landroid
2.导入头文件
#include <jni.h> #include <android/bitmap.h>
3.将得到的像素以回到函数的形式返回外层,供其他接口使用
void setBitmap(JNIEnv *env, jobject bitmap,function<void(int,int,void* pixels)> pixelDataFun) { AndroidBitmapInfo bitmapInfo; // 获取bitmap的属性信息 int ret = AndroidBitmap_getInfo(env, bitmap, &bitmapInfo); if (ret != ANDROID_BITMAP_RESULT_SUCCESS) { LOGE("AndroidBitmap_getInfo %d", ret); } void *bitmapPixels; int pixRet = AndroidBitmap_lockPixels(env, bitmap, &bitmapPixels); if (pixRet != ANDROID_BITMAP_RESULT_SUCCESS) { LOGE("AndroidBitmap_lockPixels %d", pixRet); } int mWidth = bitmapInfo.width; int mHeight = bitmapInfo.height; pixelDataFun(mWidth,mHeight,bitmapPixels); AndroidBitmap_unlockPixels(env, bitmap); }
标签:java,int,kotlin,bitmapInfo,env,AndroidBitmap,jni,bitmap From: https://www.cnblogs.com/tony-yang-flutter/p/18400653