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
}
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.
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.
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.
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);
}
来源:https://stackoverflow.com/questions/35476073/android-code-to-fetch-image-from-server-and-display-it-in-imageview