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