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