如何显示凌空调用后获得的Base.64图像字符串

时间:2018-11-27 09:09:55

标签: android android-glide

我得到一个图像作为base64字符串,作为对JSONArray格式的Web服务调用的响应。我需要在MainActivity的imageView中显示它。我尝试使用 Glide ,但它不显示图像。我将Base64 String转换为byte [],然后将该字节加载为glide。 也许我在这里做错了。但是我找不到它。

MainActivity.java

public class MainActivity extends AppCompatActivity {

String imageBytes;
ImageView picView;
RequestQueue requestQueue2 ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    picView=(ImageView)findViewById(R.id.imageView) ;
    PIC__WEB_CALL();

}
public void PIC__WEB_CALL(){

    String HTTP_SERVER_URL= String.format("http://192.1.1.1/Pic/001");

    JsonArrayRequest jsArrRequest = new JsonArrayRequest
            (Request.Method.GET, HTTP_SERVER_URL, null, new Response.Listener<JSONArray>() {

                @Override
                public void onResponse(JSONArray response) {

                    PIC_PARSE_DATA_AFTER_WEBCALL(response);

                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    // TODO Auto-generated method stub

                }
            }){

    };


    requestQueue2 = Volley.newRequestQueue(this);

    requestQueue2.add(jsArrRequest);

}



public void  PIC_PARSE_DATA_AFTER_WEBCALL(JSONArray array){

    for(int i = 0; i<array.length(); i++) {
        Log.i("COURT", "Kooi");

        JSONObject json = null;
        try {
            json = array.getJSONObject(i);


            imageBytes=(json.getString("Pic"));

            Glide.with(this)
                    .load(Base64.decode(imageBytes, Base64.DEFAULT))
                    .into(picView);

        } catch (JSONException e) {

            e.printStackTrace();
        }

    }
    if (array.length() != 0) {

//.....
    }
}
}

1 个答案:

答案 0 :(得分:1)

将您的基本64位字符串解码为byte [],然后转换为位图

byte[] decodedString = Base64.decode(imageBytes, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 
0,decodedString.length);
picView.setImageBitmap(decodedByte);