一、'jnigraphics'库:
这是一个很小的库,展示一个稳定的,基于C语言的,接口,使本机代码安全地访问Java对象的像素缓冲区的位图.
使用它,在你的源代码中包含<android/bitmap.h>,并链接库jnigraphics:LOCAL_LDLIBS + = -ljnigraphics
详细信息,请阅读bitmap.h:build/platforms/android-8/arch-arm/usr/include/android/bitmap.h
简单地说,典型的使用应该是这样的:
1 、根据JNI位图句柄,然后使用AndroidBitmap_getInfo()来检索有关信息 (例如它的宽度/高度/像素格式)
2、使用AndroidBitmap_lockPixels()来锁定像素缓冲区和指针。直到AndroidBitmap_unlockPixels()被调用之前可确保像素不被移动
3 、修改像素缓冲区,本地代码中根据其像素格式,宽度,步幅等
4 、调用AndroidBitmap_unlockPixels()来解锁缓冲区。
二、图像处理的结果以bitmap返回,那么可以在java层创建一张bitmap,然后把该bitmap传到jni层,直接使用bitmap的数据指针来保存结果,这样就能
省掉拷贝数据的过程,在我的实验中,这个拷贝过程是很费时间的。