我有这段代码,它已使用Webservice获取已经转换为字符串的BLOB图像。这是JSON输出。
{driver_name: "Anna Biendia" taxi_plate_no: "NUV 900" driver_contact_no: "09169271825" driver_operator: "grab" driver_operator_address: "987 Buendia St. California" image: "iVBORw0KGgoAAAANSUhEUgAACDQAAAXcCAYAAADXlEzmAAAACXBIWX..."}
这是我在android中获取JSON并将其显示在布局中的代码。除图像外,其他值也已显示。
public class DriverDetails extends Activity { ArrayList<Objects> objectsList = new ArrayList<>(); String url = "http://192.168.1.110:8080/taxisafe3/displays/taxidetails"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_driver_details); new Task().execute(url); } public class Task extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... strings) { String content = HttpULRConnect.getData(url); return content; } @Override protected void onPostExecute(String s) { try { TextView title1 = (TextView) findViewById(R.id.textView3); TextView title = (TextView) findViewById(R.id.textView2); TextView title2 = (TextView) findViewById(R.id.textView7); TextView title3 = (TextView) findViewById(R.id.textView9); TextView title4 = (TextView) findViewById(R.id.textView11); ImageView image = (ImageView) findViewById(R.id.imageView2); JSONArray ary = new JSONArray(s); for (int i = 0; i < ary.length(); i++) { JSONObject jsonobject = ary.getJSONObject(i); Objects objects = new Objects(); objects.setDriver_name(jsonobject.getString("driver_name")); objects.setTaxi_plate_no(jsonobject.getString("taxi_plate_no")); objects.setDriver_operator(jsonobject.getString("driver_operator")); objects.setDriver_operator_address(jsonobject.getString("driver_operator_address")); objects.setDriver_contact_no(jsonobject.getString("driver_contact_no")); objects.setImage(jsonobject.getString("image")); objectsList.add(objects); if (title1 != null){ title1.setText(objects.getDriver_name()); } if (title != null){ title.setText(objects.getTaxi_plate_no()); } if (title2 != null){ title2.setText(objects.getDriver_operator()); } if (title3 != null){ title3.setText(objects.getDriver_operator_address()); } if (title4 != null){ title4.setText(objects.getDriver_contact_no()); } if(image != null){ byte[] decodedString = Base64.decode(objects.getImage(), Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); image.setImageBitmap(decodedByte); } } } catch (JSONException e) { e.printStackTrace(); } } } }
我的代码有什么问题,为什么图像没有显示在ImageView中?提前致谢。:)
将 base64 转换为 位图后
byte[] decodedString = Base64.decode(objects.getImage(), Base64.DEFAULT); Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
将位图调整为Imageview的高度和宽度
image.setImageBitmap(Bitmap.createScaledBitmap(decodedByte, image.getWidth(), image.getHeight(), false));