2013-03-28 11 views
14

Ben bu yüzden görüntü görünümünde koyabilirsiniz bitmapte base64 kodlanmış dize dönüştürmek istediğiniz görüntü görünümüne dizeyi base64 olarak kodlanmış dönüştürmek, ancak elde hata gibiAndroid

D/Skia (7490): --- dekoder-> kod çözme yanlış döndü ve bitmap boş değerini döndürür

Benim kodudur:

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

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

Base64 dizenizi nereden buldunuz? Geçerli olduğundan emin misin? – draksia

+0

Webservice'den base64 dizesi alıyorum. Bunu nasıl kontrol edebiliriz, geçerli değil mi? – Baskar

+1

Base64 dizesini alan kodu gönderir misiniz? – draksia

cevap

38

Eğer deşifre etmek istediğiniz dize vaild olduğunu ve çözülecek ve bunun için amaçlanan değere sahip olmadığını kontrol etmek zorunda flirts, Aşağıdaki gibi bir şeyler yapabilirsiniz:

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); 

o zaman sadece kodlanmış dize kodunu çözmek ve aşağıdaki gibi bir şey yaparak görüntüyü geri alabilirsiniz:

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

Aslında bu hatayı alıyorum, dize, web servisine göndererek ve cihaza geri alıyorum. – Baskar

+1

Daha önce aynı hatayı aldım, aynı sorunla karşı karşıyaydım, Yapmanız gereken tek şey, uzak veritabanına kaydetmeden önce kodlanmış bir görüntü olan dizgenin boyutunu kontrol etmektir. aldığınız dize, tam olarak aynısını aldıktan sonra yukarıdaki kodu kullanarak görüntüyü elde edersiniz. –

+0

Bu dize uzunluğu ve boyutunun sadece aynı olduğunu karşılaştırıyorum, ancak resim gösterimde gösteremiyorum. – 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)); 

bu kodu deneyin.

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