Android Base64转图片 保存至相册

最近项目中有一个需求,获取服务端的图片Base64码转回图片后保存至相册,这么简单的事还用得着我动手吗,当然是使用ctrl c v大法了,下面看看代码:

public void savePicture(String courseStr){
        SavePictureBean savePictureBean = new Gson().fromJson(courseStr, SavePictureBean.class);
        String imgPath = savePictureBean.getImgSource();
        Bitmap bitmap = ImageBase64Utils.base64ToBitmap(imgPath);
        boolean b = SaveBitmapUtil.saveImageToGallery(mActivity, bitmap, null);
        if (b) {
            mActivity.toast("保存成功");
        } else {
            mActivity.toast("保存失败");
        }
    }

imgSource就是获取到的Base64串,这也太简单了,马上开始测试一下,
结果就崩了。。。。。。。。。。
崩的代码定位到这里:

 /**
     * base64转bitmap
     *
     * @param @param  base64String
     * @param @return 设定文件
     * @return Bitmap    返回类型
     * @throws
     * @Title: base64ToBitmap
     */
    public static Bitmap base64ToBitmap(String base64String) {
        byte[] decode = Base64.decode(base64String, Base64.NO_WRAP);
        Bitmap bitmap = BitmapFactory.decodeByteArray(decode, 0, decode.length);
        return bitmap;
    }

提示Base64码不正确,但我在网页上转是好好的,所以不可能不正确。后来发现传过来的Base64码带了格式,像这样: data:image/jpeg;base64,hshshsbsbshshyzgzgzv......
,前面是编码格式,后面是编码 ,而网页上是需要格式的 ,但在手机里就不需要格式, 所以就崩了。。。
竟然还有这种事,只好自己把前面的格式去掉了:

 public void savePicture(String courseStr){
        SavePictureBean savePictureBean = new Gson().fromJson(courseStr, SavePictureBean.class);
        String imgPath = savePictureBean.getImgSource();
        Bitmap bitmap = ImageBase64Utils.base64ToBitmap(imgPath.substring(imgPath.indexOf(",")+1));
        boolean b = SaveBitmapUtil.saveImageToGallery(mActivity, bitmap, null);
        if (b) {
            mActivity.toast("保存成功");
        } else {
            mActivity.toast("保存失败");
        }
    }

这样就可以了。。
记录

你可能感兴趣的:(Android Base64转图片 保存至相册)