2012-07-18 16 views
9

Sé por qué ocurre OutOfMemoryError Exception. Pero hay alguna forma de convertir la matriz de bytes a Bitmap.Y utilicé el código siguiente, pero cuando se usa byte grande, se cierra la aplicación y se produce una excepción OutOfMemoryError.Android ¿La mejor manera de convertir una matriz de bytes a Bitmap?

Y tengo API me devuelve matriz de bytes nada más.

Bitmap bmp = BitmapFactory.decodeByteArray(bytearray, 0, bytearray.length); 
+0

¿Qué tan grande es el bytearray? ¿Realmente es una gran imagen? Quizás la imagen sea realmente grande para la memoria del teléfono y debería comprimirla en el lado del servidor si la está recuperando desde allí. – DNax

+0

revise esta buena explicación http://developer.android.com/training/displaying-bitmaps/load-bitmap.html – dhams

Respuesta

0

es probable que tenga que utilizar este método siguiente (DOC, mismo método, pero con el parámetro options):

public static Bitmap decodeByteArray (byte[] data, int offset, int length, BitmapFactory.Options opts) 

y jugar con el parámetro options. Espero que esto te ayude =)

0

Puede que quieras usar la biblioteca de AQuery para cargar tus imágenes, esto te ayudará a cambiar el tamaño, ver etc. y evitar las fugas de memoria más comunes. Esta herramienta se puede encontrar aquí: http://code.google.com/p/android-query/

+0

¿Cómo podría convertir el byte [] al mapa de bits con AQuery? – atasoyh

3

Esto es lo que funcionó para mí: foto es una cadena de una imagen por cierto.

byte[] imgbytes = Base64.decode(photo, Base64.DEFAULT); 
Bitmap bitmap = BitmapFactory.decodeByteArray(imgbytes, 0, 
imgbytes.length); 
imageupload.setImageBitmap(bitmap); 
4
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapbytes , 0, bitmapbytes .length); 

devuelve el mapa de bits decodificado, o null si la imagen no podía ser de decodificación.

Cuestiones relacionadas