简体   繁体   English

如何在Android中将Base64字符串解码为位图图像

[英]How to decode a Base64 string into a Bitmap image in Android

Before you label this question as a repeat, look at my case, please. 在将此问题标记为重复之前,请先看一下我的案子。 I have perused most of the references on this question, but they didn't work for me. 我仔细阅读了有关此问题的大多数参考资料,但它们对我没有用。

Here is what I have in my SAX Model: 这是我的SAX模型中的内容:

    public class Parameter {
...

    //This is retrieved from a RESTful URL as xml and nicely mapped into this field
public String image_icon_data = "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";


public Bitmap getImageIcon() {
    if(image_icon_data!=null) {
        byte[] image_data = Base64.decode(image_icon_data, Base64.NO_WRAP);
        return BitmapFactory.decodeByteArray(image_data, 0, image_data.length);
    }
    return null;
    }
...
}

Then in my MainActivity.java I have: 然后在我的MainActivity.java我有:

ImageView imageView_parameter_icon = (ImageView)findViewById(R.id.imageView_parameter_icon);
    imageView_parameter_icon.setImageBitmap(parameter.getImageIcon());

And I get NOTHING!! 而且我什么都没有!

SOLVED! 解决了! I figured that I needed to set BitmapFactory.Options in order to specify the mime-type and the output image resolution being expected. 我认为我需要设置BitmapFactory.Options才能指定mime类型和预期的输出图像分辨率。 Here is how: 方法如下:

public Bitmap getImageIcon() {
    if(image_icon_data!=null) {
        byte[] image_data = Base64.decode(image_icon_data, Base64.NO_WRAP);

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.outHeight = 32; //32 pixles
        options.outWidth = 32; //32 pixles
        options.outMimeType = image_icon_type; //this could be image/jpeg, image/png, etc

        return BitmapFactory.decodeByteArray(image_data, 0, image_data.length, options);
    }
    return null;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM