Android - Прочитайте изображение PNG без альфы и декодируйте как ARGB_8888

Я пытаюсь прочитать изображение из 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?

Если бы у кого-либо есть идея, это было бы большим!

6
задан user345982 21 May 2010 в 13:39
поделиться