Я пытаюсь прочитать изображение из sdcard (в эмуляторе) и затем создать Растровое изображение с
BitmapFactory.decodeByteArray
метод. Я установил опции:
options.inPrefferedConfig = Bitmap.Config.ARGB_8888
options.inDither = false
Затем я извлекаю пиксели в ByteBuffer.
ByteBuffer buffer = ByteBuffer.allocateDirect(width*height*4)
bitmap.copyPixelsToBuffer(buffer)
Я использую этот ByteBuffer затем в JNI, чтобы преобразовать его в формат RGB и хотеть вычислить на нем.
Но всегда я получаю ложные данные - я тестирую, не изменяя ByteBuffer. Только вещь, которую я делаю, состоит в том, чтобы поместить его в собственный метод в JNI. Затем бросьте его в a unsigned char*
и преобразуйте его назад в a ByteBuffer
прежде, чем возвратить его назад Java.
unsigned char* buffer = (unsinged char*)(env->GetDirectBufferAddress(byteBuffer))
jobject returnByteBuffer = env->NewDirectByteBuffer(buffer, length)
Прежде, чем отобразить изображение я возвращаю данные с
bitmap.copyPixelsFromBuffer( buffer )
Но затем это имеет неправильные данные в нем.
Мой Вопрос состоит в том, если это вызвано тем, что изображение внутренне преобразовывается в RGB 565 или что не так здесь?
.....
Имейте ответ для него:
->>> да, это преобразовывается внутренне в RGB565.
Кто-либо знает, как создать такое растровое изображение из PNG с форматом пикселя ARGB8888?
Если бы у кого-либо есть идея, это было бы большим!