2017-04-02 6 views
0

이 질문을 반복으로 표시하기 전에 제 사례를 살펴보십시오. 이 질문에 대한 대부분의 참고 문헌을 읽었지만 저에게 도움이되지 않았습니다. 내가 가진 내 MainActivity.java에서 다음Base64 문자열을 Android에서 비트 맵 이미지로 디코딩하는 방법

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; 
    } 
... 
} 

:

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

그리고 나는 아무것도 얻을! 여기

내가 내 SAX 모델이 무엇인지입니다

+0

그래서 decodeByteArray는 null을 반환했습니다. 그것은 쉽게 일어날 수 있습니다. 몇 가지 그림을 게시해야합니다. base64 문자열의 길이입니다. 바이트 배열의 길이 포함 된 이미지의 해상도. – greenapps

+0

@greenapps 알아 냈어! 예상되는 MIME 형식과 출력 이미지 해상도를 지정하려면 BitmapFactory.Options를 설정해야했습니다. –

답변

0

솔트! mime-type과 예상되는 출력 이미지 해상도를 지정하기 위해 BitmapFactory.Options을 설정해야한다고 생각했습니다. 방법은 다음과 같습니다.

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