android从java/kotlin层传递bitmap给jni并使用其像素
一、概述
在做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); }
分类:
JNI
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2023-09-06 sentinel环境搭建及集合SpringBoot简单使用
2013-09-06 Android解决Intent中的数据重复问题