[英]pass bitmap reference from java to C++?
我想在Java中创建一个位图,传递它的引用并使用c ++对其进行操作,然后在Java中查看结果。 特别是,我尝试了以下操作,但没有结果:
JNIEXPORT void JNICALL Java_com_dacuda_scannermousetablet_ui_activities_HomeActivity_setChangeBitmap(
JNIEnv *env, jobject obj, jobject bitmap) {
mainEnv = env;
AndroidBitmapInfo info;
void* pixels;
int ret;
if ((ret = AndroidBitmap_getInfo(env, bitmap, &info)) < 0) {
return;
}
if (info.format != ANDROID_BITMAP_FORMAT_RGB_565) {
return;
}
if ((ret =AndroidBitmap_lockPixels(env, bitmap, &pixels)) < 0) {
}
uint16_t *pictureRGB;
int size = sizeof(uint16_t)*info.width*info.height;
pictureRGB = (uint16_t*)malloc(sizeof(uint16_t)*info.width*info.height);
memcpy((char*)pixels, (char*)pictureRGB, info.width*info.height*sizeof(uint16_t));
mEdit = new EditImage((char*)pictureRGB, info.width, info.height);
mEdit->changeBrightness();
}
而且我除了在Java端已经更改了位图外,不幸的是它不起作用。
您需要对AndroidBitmap_unlockPixels
进行匹配调用
另外,以下代码仅用“随机”数据填充您的图片:
pictureRGB = (uint16_t*)malloc(sizeof(uint16_t)*info.width*info.height);
memcpy((char*)pixels, (char*)pictureRGB, info.width*info.height*sizeof(uint16_t));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.