Android: Нужен более быстрый способ отображения растрового изображения RGB565 из массива байтов

#android #canvas #bitmap #surfaceview

#Android #canvas #растровое изображение #surfaceview

Вопрос:

У меня есть массив байт RGB565, который я отображаю на своем Canvas следующим образом:

     Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    ByteBuffer buf = ByteBuffer.wrap(data); // data is my array
    bmp.copyPixelsFromBuffer(buf);
    // then I display the bitmap on my SurfaceView
  

Я вижу, что эта процедура довольно медленная на моем телефоне. Могу ли я сделать быстрее, мне просто нужно отобразить этот массив байтов RGB565 на моем canvas. На моем телефоне нет графического ускорителя, поэтому OpenGL, вероятно, не поможет..

Комментарии:

1. Почему проблема с производительностью? Вы делаете это много раз?

Ответ №1:

Это не подробный ответ, но если вам нужна серьезная производительность с растровыми изображениями, я бы подумал о том, чтобы сделать это в NDK. Я немного поработал с этим, и это довольно неплохо.

http://developer.android.com/sdk/ndk/overview.html

Посмотрите на пример plasma. Мы в основном начали с этого и создали наше решение.

Помимо этого, я бы предложил не создавать новое растровое изображение при каждом запуске.

Комментарии:

1. Спасибо! Действительно, я создавал новое растровое изображение при каждом запуске. Как только я начал использовать одно растровое изображение, производительность очень сильно возросла. Мне еще предстоит изучить предложенное вами решение plasma

2. С подходом из образца plasma это еще быстрее, спасибо