如何在android中加载图像

时间:2017-09-08 06:05:08

标签: android json imageview

如何将数据库中的图像加载到我的Android应用程序并将其放入listview中。数据库是MySQL,图像以png格式存储

这是我在数据库中检索数据的代码。 a_emblem是imageview和我的json文件中的图像

private void showResult() {
        JSONObject jsonObject;
        ArrayList<HashMap<String, String>> list = new ArrayList<>();
        try {
            jsonObject = new JSONObject(JSON_STRING);
            JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY1);

            for (int i = 0; i < result.length(); i++) {
                JSONObject jo = result.getJSONObject(i);
                String a_shortcut = jo.getString(Config.TAG_a_shortcut);
                String a_emblem = jo.getString(Config.TAG_a_emblem);
                String gold = jo.getString(Config.TAG_gold);
                String silver = jo.getString(Config.TAG_silver);
                String bronze = jo.getString(Config.TAG_bronze);
                String total = jo.getString(Config.TAG_total);
                HashMap<String, String> match = new HashMap<>();
                match.put(Config.TAG_a_shortcut, a_shortcut);
                match.put(Config.TAG_a_emblem, a_emblem);
                match.put(Config.TAG_gold, gold);
                match.put(Config.TAG_silver, silver);
                match.put(Config.TAG_bronze, bronze);
                match.put(Config.TAG_total, total);
                list.add(match);

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        ListAdapter adapter = new SimpleAdapter(
                getActivity(), list, R.layout.standlayout,
                new String[]{Config.TAG_a_shortcut, Config.TAG_a_emblem, Config.TAG_gold, Config.TAG_silver, Config.TAG_bronze, Config.TAG_total},
                new int[]{R.id.shortcut, R.id.img, R.id.gold, R.id.silver, R.id.bronze, R.id.total});

        lv.setAdapter(adapter);
    }

How the Image are stored in my database

2 个答案:

答案 0 :(得分:0)

这是你可以做的。

  1. 将图片转换为位图。

  2. 将您的图片转换为base64字符串,并将此base64字符串保存在数据库中。

  3. 在适配器中使用base64字符串时将其转换回图像。

  4. 在ImageView中设置位图。

  5. 绝对应该有效。参考代码

    1. 将drawable转换为Bitmap

      Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
                                         R.drawable.icon_resource);
      
    2. 使用以下方法将位图转换为字节数组:

      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();  
      bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
      byte[] byteArray = byteArrayOutputStream .toByteArray();
      

      从字节数组中编码base64字符串:

      String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
      

      encoded保存在数据库中。

    3. 将base64字符串转换回Bitmap

      byte[] decodedString = Base64.decode(encoded , Base64.DEFAULT);
      Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
      
    4. 将位图设置为图像视图:

      imageView.setImageBitmap(bitmap);
      

答案 1 :(得分:0)

使用Picasso或滑翔这里是你的网址

Picasso

Glide