2017-04-02 101 views
0

在将此问题标记为重复之前,请查看我的情况。我已经阅读了关于这个问题的大部分参考文献,但他们不适合我。如何将Base64字符串解码为Android中的位图图像

以下是我在我的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; 
    } 
... 
} 

然后在我的MainActivity.java我:

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

,我什么也没得到!

+0

所以decodeByteArray返回null。这很容易发生。你应该张贴一些数字。 base64字符串的长度。字节数组的长度。包含图像的分辨率。 – greenapps

+0

@greenapps我想通了!我需要设置'BitmapFactory.Options'来指定预期的MIME类型和输出图像分辨率。 –

回答

0

已解决! 我想我需要设置BitmapFactory.Options才能指定mime类型和输出图像分辨率。 这里是:

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; 
} 
相关问题