Android代码,用于从服务器获取图像并在Imageview中显示

时间:2016-02-18 08:15:24

标签: android json rest imageview

您好我知道如何从jsonobject中获取字符串,但我的问题是如何从Rest api获取图像并显示它。图像在jsonobject

中存储为profile_image

我的代码:

 try {
                    JSONObject jsonObject = new JSONObject(response);
                    JSONObject object = jsonObject.getJSONObject("user");
                    String attr1 = object.getString("username");
                    data = "" + attr1;
                    textView15.setText(data);
                    if (object.has("profession")) {
                        String attr2 = object.getString("profession");
                        data2 = "" + attr2;
                        textView16.setText(data2);
                    }
                    if(object.has("company")){
                        String attr3 = object.getString("company");
                        data3 = "" + attr3;
                     textView38.setText(data3);
                    }

                    if(object.has("profile_image")) {
                        //what has to be done here
                    }

4 个答案:

答案 0 :(得分:2)

有几种可能的情况:

Case 1.图像是Base64,然后你需要解码它并使用BitmapFactory方法:

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

Case 2. Json包含图片链接。只需加载链接,当您收到Stream对象时,将其传递给BitmapFactory。像这样:

InputStream instream = httpEntity.getContent();
bmp = BitmapFactory.decodeStream(instream);

上面的示例使用HttpClient类,搜索api文档,了解如何从您使用过的网络库中获取InputStream。

答案 1 :(得分:1)

如果您想使用Picasso Image库,可以这样做:

if (object.has("profile_image") {
  Picasso.with(context).load(object.get("profile_image")).into(R.id.image_view);
}

查看https://github.com/square/picasso以获取文档。

答案 2 :(得分:1)

可以使用Picasso

完成此操作

在项目的build.gradle文件中添加依赖项

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
    compile 'com.squareup.picasso:picasso:2.4.0'
}

并在您的方法中添加代码,如下所示

if(object.has("profile_image")) {
    // imageView should be declared in layout xml file with id `imageView`
    ImageView imageView = (ImageView) context.findViewById(R.id.imageView);
    com.squareup.picasso.Picasso.with(context).
        load(object.get("profile_image")).
        placeholder(R.mipmap.ic_launcher).
        into(imageView);
}

并完成。

  

注意:object.get("profile_image")应该返回完整的图像路径。

     

例如http://www.example.com/images/image1.jpg

     

然后才会起作用。

答案 3 :(得分:0)

如果您的图像数据在" profile_image"是Base64编码的字符串,然后您可以通过以下转换为位图。

 while ($row = mysqli_fetch_assoc($result)) 
{
$userDataArray[$index] = $row;
$row = $userDataArray[$index];
echo "<tr><td>".$row['id']."</td>";
echo "<td>".$row['firstname']."</td>"";
echo "<td>".$row['email']."</td></tr>"";
$index++;
}