проблема отображения растрового изображения из нативного кода в Android - PullRequest
1 голос
/ 11 февраля 2011

Возникла проблема с отображением растрового изображения с использованием собственного кода.Мой код, как показано ниже

Собственный код

 JNIEXPORT void JNICALL Java_app_Panel_renderbitmap(JNIEnv* env, jobject obj,  jobject bitmap, jlong time_ms)
 {
 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) {
}

memcpy(pixels, pictureRGB, 480*320);

AndroidBitmap_unlockPixels(env, bitmap);
}

Java-код

         Bitmap mBitmap = Bitmap.createBitmap(480, 320, Bitmap.Config.RGB_565);
         renderbitmap(mBitmap, 0);
         canvas.drawBitmap(mBitmap, 0, 0, null);

И мое приложение падает на memcpy, в котором pictureRGB объявлен как int * pictureRGB[4];

Все пиксели находятся внутри изображения RGB.Что-то не так, как я?Я передаю правильные значения в bitmap и memcpy?

1 Ответ

1 голос
/ 11 февраля 2011

Я думаю, вы должны объявить pictureRGB следующим образом:

uint16_t *pictureRGB;
pictureRGB = malloc(sizeof(uint16_t)*480*320);

А затем скопировать пиксели, сделав следующее:

memcpy(pixels, pictureRGB, 480*320*sizeof(uint16_t));
...