nikita Yalgi
nikita Yalgi

Reputation: 37

Android code to fetch Image from server and display it in Imageview

Hi I know how to fetch an string from jsonobject, but my question is how to fetch an image from Rest api and display it. The image is stored as profile_image in jsonobject

My code:

 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
                    }

Upvotes: 0

Views: 11529

Answers (4)

ELITE
ELITE

Reputation: 5940

This can be done using Picasso

for that add dependancy in build.gradle file of your project

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'
}

and add code in your method as below

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);
}

and done.

NOTE : object.get("profile_image") should return full path of image.

for e.g. http://www.example.com/images/image1.jpg

then only it will work.

Upvotes: 1

Marius Kaunietis
Marius Kaunietis

Reputation: 704

There are several possible cases:

Case 1. Image is Base64, then you need to decode it and use BitmapFactory method:

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

Case 2. Json contains link to image. Simply load the link, and when you receive Stream object, pass it to BitmapFactory. Something like this:

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

Above example uses HttpClient class, search api docs on how to get InputStream from your used network library.

Upvotes: 2

Rakesh
Rakesh

Reputation: 756

If your image data in "profile_image" is Base64 encoded string then you can convert to bitmap by following.

if(object.has("profile_image")) 
{
     byte[] decodedString = Base64.decode(object.getString("profile_image", Base64.DEFAULT);
     Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
}

Upvotes: 0

Thomas R.
Thomas R.

Reputation: 8073

If you want to use Picasso Image library for this, you can do it like this:

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

Check out https://github.com/square/picasso for documentation.

Upvotes: 1

Related Questions