2013-03-28 9 views
14

voglio convertire base64 stringa codificata in bitmap modo che io possa mettere in vista delle immagini, ma ottenere errore comeAndroid convertire Base64 stringa codificata in visualizzazione dell'immagine

D/skia (7490): --- Decoder-> decodificare restituito falso e bitmap restituisce valore nullo

il mio codice è:

byte[] imageAsBytes = Base64.decode(imageData); 

image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)); 
+0

Dove hai ottenuto la stringa base64? Sei sicuro che sia valido? – draksia

+0

sto ricevendo la stringa base64 da webservice. Come possiamo verificare che sia valido o no? – Baskar

+1

Puoi pubblicare il codice che ottiene la stringa Base64? – draksia

risposta

38

Firts si deve verificare che la stringa che si desidera decodificare è vaild e ha il valore destinato ad essere decodificato e per farlo, puoi fare qualcosa di simile qui sotto:

filePath= Environment.getExternalStorageDirectory() 
         + "/SaudiScore/temporary_holder.jpg"; 
Bitmap selectedImage = BitmapFactory.decodeFile(filePath); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
selectedImage.compress(Bitmap.CompressFormat.JPEG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 
String strBase64=Base64.encodeToString(byteArray, 0); 

allora si può decodificare la stringa che hai appena codificato e ottenere l'immagine di nuovo facendo qualcosa di simile al seguente:

byte[] decodedString = Base64.decode(strBase64, Base64.DEFAULT); 
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
image.setImageBitmap(decodedByte); 
+0

Attualmente sto ricevendo la stringa di codifica, inviando al servizio web e di nuovo al dispositivo, quella volta sto ricevendo questo errore. – Baskar

+1

Ho già ricevuto lo stesso errore, ero di fronte allo stesso problema. Tutto quello che devi fare è controllare la dimensione della stringa che in realtà era un'immagine codificata prima di salvarla nel database remoto è uguale alla dimensione di stringa che hai recuperato, una volta ottenuto esattamente lo stesso otterrai l'immagine usando il codice sopra. –

+0

Sto confrontando la lunghezza e le dimensioni delle stringhe solo uguali, ma non riesco a mostrare in imageview. – Baskar

1
String base = "Base64 string values of some image"; 

byte[] imageAsBytes = Base64.decode(base.getBytes(), Base64.DEFAULT); 

ImageView image = (ImageView) this.findViewById(R.id.imageView1); 

image.setImageBitmap(BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)); 

provare questo codice.

11
byte[] decodedString = Base64.decode(mBase64string, Base64.DEFAULT); 
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,decodedString.length); 
mImageView.setImageBitmap(decodedByte); 
Problemi correlati