我得到一个图像作为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) {
//.....
}
}
}
答案 0 :(得分:1)
将您的基本64位字符串解码为byte [],然后转换为位图
byte[] decodedString = Base64.decode(imageBytes, Base64.DEFAULT);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString,
0,decodedString.length);
picView.setImageBitmap(decodedByte);