首页 > 解决方案 > 如何显示凌空调用后获得的Base.64图像字符串

问题描述

我将图像作为 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) {

//.....
    }
}
}

标签: androidandroid-glide

解决方案


将您的 base 64 字符串解码为 byte[],然后转换为 Bitmap

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

推荐阅读