位图copyFromPixel缓冲区切片崩溃?

时间:2020-03-27 11:16:37

标签: android bitmap bytebuffer

有人可以告诉我copyPixelsFromBuffer是否应该与切片缓冲区一起使用吗?

当我这样做时,我对下面的代码很感兴趣: TID 19021中的致命信号11(SIGSEGV),代码1(SEGV_MAPERR),故障加法器0xbfc8019c

由于我的位置是0,而我的arrayOffset如果不同于0,我想这个函数试图访问0索引,而没有从切片中获取arrayOffset的计数。如果创建一个新数组并将其包装在新的byteBuffer中,它将起作用。

这不起作用:

#include "jni_test_JNI_Test.h"
#include <iostream>

/*
 * Class:     jni_test_JNI_Test
 * Method:    createFoo
 * Signature: (Ljava/lang/String;)Ljni_test/JNI_Test/Foo;
 */
JNIEXPORT jobject JNICALL Java_jni_1test_JNI_1Test_createFoo
  (JNIEnv* env, jclass fooClass, jstring bar) {

    jobject result = env->AllocObject(fooClass);

    jfieldID barField = env->GetFieldID(fooClass, "bar", "Ljava/lang/String;");

    env->SetObjectField(result, barField, bar);

    return result;
}

这有效:

Buffer buffer = something coming from ByteBuffer.slice();
bitmap = Bitmap.createBitmap(getWidth(), getHeight(), bitmapConfig);
bitmap.copyPixelsFromBuffer(buffer);

第二种方法有效,但是过度工作和过度使用内存。是否有另一个从切片的byteBuffer创建位图?

谢谢

0 个答案:

没有答案