¿Por qué BitmapFactory.decodeByteArray devuelve nulo?

Es el código simple y en lugar de obtener el resultado para establecer el bitmap, obtengo nulo. ¿Alguien puede decirme dónde estoy cometiendo un error?

String test = "test"; byte[] byteA = test.getBytes(); Bitmap bmp = BitmapFactory.decodeByteArray(byteA, 0, byteA.length); //<- I get null here ImageView image = (ImageView) findViewById(R.id.image); image.setImageBitmap(bmp); 

ACTUALIZAR

Ok, entonces no puedo convertir texto a imagen como pensé que podría. ¿Qué hay de esta manera? ¿Esto creará un bitmap?

  Paint paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.RED); paint.setTextSize(16); paint.setAntiAlias(true); paint.setTypeface(Typeface.MONOSPACE); Bitmap bm = Bitmap.createBitmap(16, 16, Bitmap.Config.ALPHA_8); float x = bm.getWidth(); float y = bm.getHeight(); Canvas c = new Canvas(bm); c.drawText("Test", x, y, paint); 

De la documentación :

Devuelve el bitmap decodificado, o nulo si la imagen no pudo decodificarse.

Los bytes implicados en la cadena “prueba” no son un bitmap válido, ¿o sí?

Si guardó el texto “prueba” en un archivo llamado foo.png o foo.jpg etc. y trató de abrirlo en Windows, ¿cuál esperaría que fuera el resultado? Sería un error: esos bytes simplemente no son una imagen válida en ningún formato conocido.

EDITAR: No sé nada sobre los gráficos de Android, pero su actualización ciertamente parece una forma mucho más razonable de dibujar texto en un bitmap.

Obtiene null porque proporciona datos de bitmap no válidos.

Ver documentación de BitmapFactory.decodeByteArray () .

Porque los bytes en "test".getBytes() no representan un bitmap válido .

Necesita crear una matriz de bytes que en realidad contenga un bitmap codificado, no solo algunos “bytes aleatorios” correspondientes a la representación de una cadena.

Está intentando analizar un String como un bitmap. BitmapFactory.decodeByteArray() fallará a menos que haya un bitmap válido en la matriz de bytes. En este caso, no, por lo que devuelve nulo.

En tal caso, primero debe convertir la cadena a Base64.

 String strImage = geTImageAsHexString(); byte[] x = Base64.decode(strImage, Base64.DEFAULT); //convert from base64 to byte array Bitmap bmp = BitmapFactory.decodeByteArray(x,0,x.length); 

matriz de bytes de datos de imagen comprimida: ¿qué es esto y cómo es diferente de byte [] data = new byte [sz]?

¡Nadie hasta ahora ha dado una respuesta clara! Todo lo que la gente ha estado hablando es que hay un bitmap no válido. Una respuesta más informativa sería cómo crear una matriz de bytes válida en el bajo nivel

En mi caso BitmapFactory.decodeByteArray devolvió null porque el búfer de imagen recibido era incorrecto. Trate de ver el envío de búfer y el búfer entrante, estoy seguro de que verá la diferencia en dos matrices. La mayoría de las veces esta es la causa.