0
我想在java中創建一個位圖,傳遞它的引用並用C++處理它,並在java中看到 的結果。 特別,我嘗試以下,但沒有結果:從Java到C++傳遞位圖參考?
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方面,但遺憾的是它不工作。
其實我有沒有在C經驗++和剛纔複製的memcpy ..部分。我的原始數據是像素,所以我應該使用像素進行操作。因此我想我應該將像素複製到pictureRGB,使用pictureRGB進行操作並調用memcpy((char *)像素,(char *)pictureRGB,info.width * info.height * sizeof(uint16_t));方法。我對嗎? – someUser
您可以直接操作像素或設置pictureRGB'uint16_t * pictureRGB =&像素' – Frohnzie