2011-03-09 21 views
6

estoy comprimiendo un mapa de bits de la siguiente maneraDecode matriz de bytes de mapa de bits que ha sido comprimido en Java

Bitmap bmpSig = getMyBitMap(); 
int size = bmpSig.getWidth() * bmpSig.getHeight(); 
ByteArrayOutputStream out = new ByteArrayOutputStream(size); 
bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); 
byte[] bytSig = out.toByteArray(); 

entonces yo estoy tratando de mostrar la imagen en una ImageView Android desde la matriz de bytes. Cuando hago esto, obtengo una imagen que es completamente negra.

ImageView myImg = (ImageView) findViewById(R.id.img_view); 
myImg.setImageBitmap(BitmapFactory.decodeByteArray(bytSig, 0, bytSig.length)); 

Asumo que es porque me falta un paso antes de BitmapFactory.decodeByteArray() para revertir la compresión JPEG. ¿O he entendido mal cómo funciona la compresión?

Respuesta

6

No me di cuenta de que el fondo de mi mapa de bits (de un objeto Canvas) era transparente. Como este mapa de bits es solo líneas negras sobre un fondo blanco, la imagen negra se debe comprimir a JPEG, lo que le da a la imagen un fondo negro.

He cambiado

bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); 

a

bmpSig.compress(Bitmap.CompressFormat.PNG, 100, out); 

y está funcionando como se esperaba.

+1

Nah ... solo necesitabas usar un tono más oscuro de negro. –

Cuestiones relacionadas