从Json byte []值在imageView中显示图像,SkImageDecoder :: Factory返回null

时间:2014-10-31 04:46:37

标签: java android json

我正在尝试将byte[]转换为图片。 byte[]来自JSON,它采用以下格式:

json的字节数组值:

"255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0,0,255,219,0,132,0,9,6,7,20,19,18,20,20,19,20,21,22,20,22,20,21,...".

我正在使用以下代码将byte[]转换为位图图片。

            String encodedString="255,216,255,224,0,16,74,70,73,70,0,1,1,0,0,1,0,1,0....";
            byte[] encodeByte = encodedString.getBytes();
            System.out.println("encodeByte : "+encodeByte);
            System.out.println("encodeByte.length : "+encodeByte.length);
            Bitmap photo=BitmapFactory.decodeByteArray(encodeByte, 0,                     encodeByte.length);
            System.out.println("Bitmap photo : "+photo);
            btnImg.setImageBitmap(photo);

我在Logcat中收到以下错误:

10-31 00:20:57.210: I/System.out(1315): encodeByte : [B@b3d249d8
10-31 00:20:57.210: I/System.out(1315): encodeByte.length : 18320
10-31 00:20:57.220: D/skia(1315): --- SkImageDecoder::Factory returned null
10-31 00:20:57.220: I/System.out(1315): Bitmap photo : null

我得到了这样的错误。请帮助我

1 个答案:

答案 0 :(得分:0)

这是将byteArray转换为Base64Encoded String并将其转换为位图图像的方法。

使用以下代码将byte []转换为位图图像。

//将byteArray转换为base64字符串

            byte[] photo_byte = (your byte[] from json response);
            //To encode byte[] as string for other purpose
            String photoString =Base64.encodeToString(photo_byte, Base64.DEFAULT);

            //decode the string to bitmap 
            byte[] decodedString = Base64.decode(photoString, Base64.DEFAULT);
            Bitmap decoded_photo_byte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);