25

base64でエンコードされた文字列をビットマップに変換して画像ビューに入れることができるようにしたいのですが、次のようなエラーが発生します

D/skia(7490): --- デコーダ -> デコードは false を返し、ビットマップは null 値を返します

私のコードは次のとおりです。

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

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

6 に答える 6

51

まず、デコードしたい文字列が有効であり、デコードする意図した値を持っていることを確認する必要があります。そのためには、以下のようにすることができます:

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

次に、次のようなことを行うことで、エンコードしたばかりの文字列をデコードし、画像を取得できます。

byte[] decodedString = Base64.decode(strBase64, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
image.setImageBitmap(decodedByte);
于 2013-03-28T13:35:04.423 に答える
25
byte[] decodedString = Base64.decode(mBase64string, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,decodedString.length);
mImageView.setImageBitmap(decodedByte);
于 2016-07-14T10:29:12.377 に答える
7
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));

このコードを試してください。

于 2016-05-17T08:45:12.823 に答える
0

この方法は次のことに役立ちます。

private void setExistImage(ImageView imageView, String base64String){
    if (!base64String.isEmpty()) {
        byte[] bytes = Base64.decode(base64String, Base64.DEFAULT);
        imageView.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length));
    }
}
于 2018-08-19T07:53:30.920 に答える