2013-03-28 31 views
14

Tôi muốn chuyển đổi mã hóa base64 chuỗi thành bitmap vì vậy tôi có thể đặt ở chế độ xem hình ảnh, nhưng nhận được lỗi nhưAndroid chuyển đổi mã hóa base64 chuỗi vào xem hình ảnh

D/skia (7490): --- decoder-> giải mã trở lại sai và bitmap trả về giá trị null

mã của tôi là:

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

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

Bạn nhận chuỗi base64 ở đâu? Bạn có chắc nó hợp lệ không? – draksia

+0

tôi đang nhận chuỗi base64 từ webservice. Làm thế nào chúng ta có thể kiểm tra xem nó có hợp lệ hay không? – Baskar

+1

Bạn có thể đăng mã nhận chuỗi Base64 không? – draksia

Trả lời

38

flirts bạn phải kiểm tra xem chuỗi bạn muốn giải mã là vaild và có giá trị nhằm được giải mã và làm như vậy, bạn có thể làm điều gì đó như sau:

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

sau đó bạn có thể giải mã các chuỗi mà bạn chỉ được mã hóa và có được hình ảnh lại bằng cách làm một cái gì đó như sau:

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

Thực ra tôi đang nhận được chuỗi mã hóa, gửi tới webservice và quay lại thiết bị, lúc đó tôi nhận được lỗi này. – Baskar

+1

Tôi đã gặp lỗi tương tự trước đây, tôi phải đối mặt với cùng một vấn đề, Tất cả những gì bạn phải làm là kiểm tra kích thước chuỗi thực sự là một hình ảnh được mã hóa trước khi bạn lưu nó vào cơ sở dữ liệu từ xa. chuỗi mà bạn đã truy xuất, một khi bạn nhận được chính xác như vậy, bạn sẽ nhận được hình ảnh bằng cách sử dụng mã ở trên. –

+0

Tôi so sánh độ dài và kích thước chuỗi đó cũng chỉ giống nhau, nhưng tôi không thể hiển thị trong lần xem hình ảnh. – 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)); 

Hãy thử mã này.

11
byte[] decodedString = Base64.decode(mBase64string, Base64.DEFAULT); 
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,decodedString.length); 
mImageView.setImageBitmap(decodedByte); 
Các vấn đề liên quan