Tło:Piksele bitmapowe Androida - napisz bezpośrednio do pliku?
Celem jest napisanie dość dużego (co najmniej 2048 x 2048 pikseli) obrazu z danymi renderowanymi OpenGL.
dzisiaj pierwsze użycie glReadPixels w celu uzyskania 32-bitowy (argb8888) danych pikseli do tablicy int.
Następnie kopiowania danych do nowej tablicy krótki, konwersja 32-bitowe wartości argB na 16-bitowe wartości (rgb565). W tym momencie również odwracam obraz do góry nogami i zmieniam kolejność kolorów, aby dane w formacie OpenGL były kompatybilne z danymi bitmapowymi Android (kolejność rzędu i kolejność kanałów kolorów).
Wreszcie tworzę instancję Bitmap() i .copyPixelsFromBuffer (Bufor b), aby móc zapisać ją na dysku jako plik png.
Jednak chcę używać pamięci bardziej wydajne, aby uniknąć wypadków z pamięci na niektórych telefonach.
Pytanie:
mogę pominąć pierwszej transformacji z int [] -> krótki [] w jakiś sposób (i uniknąć przydział nowej tablicy dla danych pikseli)? Może po prostu użyj tablic bajtów/buforów i napisz przekonwertowane piksele na tę samą tablicę, z której czytam ...
Co ważniejsze: czy mogę pominąć tworzenie mapy bitowej (tutaj następuje awaria programu) i jakoś zapisać dane bezpośrednio do dysk jako działający plik obrazu (i uniknąć ponownego przydzielenia danych piksela w obiekcie bitmapowym)?
EDIT: Jeśli mógłbym zapisać dane bezpośrednio do pliku, może nie trzeba konwertować do 16-bitowych danych pikselowych, w zależności od rozmiaru pliku i jak szybko można odczytać pliku do pamięci w późniejszy punkt.
+1 dla doskonale pytanie pisemne – Ridcully