Мне удалось создать файл android.graphics.Bitmap и успешно заполнить его с помощью команды SetPixels.
Проблема в том, что я начинаю с данных RGBA. Затем я создаю jintArray. Затем я вызываю SetIntArray (эффективно сохраняя данные в буфере). Затем, наконец, я вызываю setPixels, чтобы на самом деле установить пиксели (что предположительно вызывает еще одну копию).
одна большая проблема с этим заключается в том, что независимо от того, использовал ли я R8G8B8A8, R5G6B5 или A8, мне все равно нужно преобразовать свои пиксельные данные в данные R8G8B8A8.
В идеале я хотел бы иметь способ заполнить буфер, используя только одну копию, и позволить мне сделать это без преобразования формата пикселей.
Есть ли способ напрямую получить данные буфера, содержащиеся в Bitmap? Я вижу, что в JNI есть функция GetDirectBufferAddress, но документация, которую я могу найти по ней, предполагает, что она ограничена java.nio.buffer. Могу ли я напрямую получить данные о пикселях с помощью этой функции? Возможно, за счет использования внутреннего буфера классом Bitmap?
Я могу использовать это только для создания Global Ref'd Java.nio.buffer, а затем каждый раз, когда я хочу обновить, копировать в него свои пиксельные данные, а затем использовать copyPixelsFromBuffer? Это все еще включает 2 копии, но может, по крайней мере, устранить изменение формата пикселей.Будет ли это более эффективным, чем метод, который я уже использую?
Есть ли еще лучший способ сделать это?
Между прочим, я AM знаю, что могу использовать функции из
Заранее ура!