Harshal Deshmukh
Harshal Deshmukh

Reputation: 1897

How to Convert Image url into Drawable Int

Good Morning All !!!!

I am trying to display images in Imageview. But My requirement is ,i need to display images in Drawable Integer Format.I am getting data from Server and getting image in url format..

For ex :http://www.mymartmycart.com/images/detailed/3/4G_CONNECT_M1.jpeg

I want to convert this image in Drawable Format.

This is My code

This is my Interface

 public interface ECCardData<T> {

    @DrawableRes
    Integer getMainBackgroundResource();

    @DrawableRes
    Integer getHeadBackgroundResource();

    List<T> getListItems();
}

My Getter and Setter

     private Integer headBackgroundResource;

public Integer getHeadBackgroundResource() {
        return headBackgroundResource;
    }

    public void setHeadBackgroundResource(Integer headBackgroundResource) {
        this.headBackgroundResource = headBackgroundResource;
    }

This code where i set images

Integer drawableRes = dataset.get(position).getHeadBackgroundResource();
    if (drawableRes != null) {
        headView.setHeadImageBitmap(BitmapFactory.decodeResource(pagerContainer.getResources(), drawableRes, new BitmapFactoryOptions()));
    }

This is my parsing

 public static ArrayList<CardData> ParseCraft(String response) throws JSONException {


        ArrayList<CardData> alUser = new ArrayList<>();

        JSONObject jsonRoot = new JSONObject(response);

        JSONArray parentArray = jsonRoot.getJSONArray("products");

        for (int j = 0; j < parentArray.length(); j++) {

            JSONObject finalObject = parentArray.getJSONObject(j);

            CardData user = new CardData();

            user.setHeadTitle(finalObject.getString("product"));
            user.setPersonName(finalObject.getString("product_code"));

            JSONObject productJsonObject = finalObject.getJSONObject("main_pair");
            JSONObject productJsonObject1 = productJsonObject.getJSONObject("detailed");

            user.setHeadBackgroundResource(productJsonObject1.getString("image_path"));



            alUser.add(user);
        }

        return alUser;
    }

My json response

{
"products": [
    {
        "product_id": "863",
        "product": "LAVA 4G CONNECT M1",
        "company_name": "SAPTHAGIRI MOBILES",
        "age_verification": "N",
        "age_limit": "0",
        "product_code": "SGMM00044",
        "product_type": "P",
        "status": "A",
        "company_id": "34",
        "approved": "Y",
        "list_price": "0.00",
        "amount": "2",
        "weight": "0.000",
        "length": "0",
        "width": "0",
        "height": "0",
        "shipping_freight": "0.00",
        "low_avail_limit": "0",
        "timestamp": "1492758588",
        "updated_timestamp": "1500273558",
        "usergroup_ids": "0",
        "is_edp": "N",
        "edp_shipping": "N",
        "unlimited_download": "N",
        "tracking": "B",
        "free_shipping": "N",
        "zero_price_action": "R",
        "is_pbp": "N",
        "is_op": "N",
        "is_oper": "N",
        "is_returnable": "Y",
        "return_period": "10",
        "avail_since": "0",
        "out_of_stock_actions": "N",
        "localization": "",
        "min_qty": "0",
        "max_qty": "0",
        "qty_step": "0",
        "list_qty_count": "0",
        "tax_ids": "",
        "options_type": "P",
        "exceptions_type": "F",
        "details_layout": "default",
        "shipping_params": "a:5:{s:16:\"min_items_in_box\";i:0;s:16:\"max_items_in_box\";i:0;s:10:\"box_length\";i:0;s:9:\"box_width\";i:0;s:10:\"box_height\";i:0;}",
        "facebook_obj_type": "activity",
        "buy_now_url": "",
        "cod": "N",
        "price": "3094.000000",
        "category_ids": [
            295
        ],
        "position": "0",
        "seo_name": "lava-4g-connect-m1",
        "seo_path": "166/234/295",
        "average_rating": null,
        "discussion_type": "D",
        "discussion_thread_id": "619",
        "main_category": 295,
        "main_pair": {
            "pair_id": "2577",
            "image_id": "0",
            "detailed_id": "3266",
            "position": "0",
            "detailed": {
                "object_id": "863",
                "object_type": "product",
                "image_path": "http://www.mymartmycart.com/images/detailed/3/4G_CONNECT_M1.jpeg",
                "alt": "",
                "image_x": "635",
                "image_y": "476",
                "http_image_path": "http://www.mymartmycart.com/images/detailed/3/4G_CONNECT_M1.jpeg",
                "https_image_path": "https://www.mymartmycart.com/images/detailed/3/4G_CONNECT_M1.jpeg",
                "absolute_path": "/home/mymartmycart/public_html/images/detailed/3/4G_CONNECT_M1.jpeg",
                "relative_path": "detailed/3/4G_CONNECT_M1.jpeg"
            }
        },
        "base_price": "3094.000000",
        "selected_options": [],
        "has_options": false,
        "product_options": [],
        "discounts": {
            "A": 0,
            "P": 0
        },
        "product_features": [],
        "qty_content": []
    }

Upvotes: 6

Views: 16584

Answers (6)

upendra
upendra

Reputation: 41

I modified this library to do that. https://github.com/upendra-bajpai/expanding-collection-network/ if you are having any difficulty you can file an issue there. instead of resource data, you can pass URL there.

Upvotes: 0

WhoisAbel
WhoisAbel

Reputation: 1679

you can doing this work in background with coroutines :

    private fun loadImageFromWebUrl(url: String?) {
    lifecycleScope.launch(Dispatchers.IO) {
        val image  = try {
            val iStream = java.net.URL(url).content as InputStream
            Drawable.createFromStream(iStream, "src name")
        } catch (e: Exception) {
            null
        }

        image?.let {
            withContext(Dispatchers.Main){
                imageView.setImageDrawable = image 
            }
        }
    }
}

Upvotes: 2

Harshal Deshmukh
Harshal Deshmukh

Reputation: 1897

This code is working for me to convert Server image url into Bitmap

 String drawableRes="http://kartpay.biz/api/v1/file/banner/IHMOcSHU7yoTVOkwYi1bOOz8shrXXrJhayCPFO17.jpeg"
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        try {
            URL url = new URL(drawableRes);
            headView.setHeadImageBitmap(BitmapFactory.decodeStream((InputStream)url.getContent()));
        } catch (IOException e) {
            //Log.e(TAG, e.getMessage());
        }

Upvotes: 4

vishal jangid
vishal jangid

Reputation: 3025

You can download image from server URL to your image view by below code

public static Drawable LoadImageFromWebURL(String url) {
try {
    InputStream iStream = (InputStream) new URL(url).getContent();
    Drawable drawable = Drawable.createFromStream(ist, "src name");
    return drawable;
} catch (Exception e) {
    return null;
}}

you can also use third party library to download image into direct imageView

compile 'com.squareup.picasso:picasso:2.5.2'

Picasso.with(context).load("image web url").into(imageView);

Upvotes: 0

AskNilesh
AskNilesh

Reputation: 69671

i think that is not possible to convert image url i to drawable int

you can use lib to show image from url try this

1. glide

you can use Glide library to load image from url look the below code it can help you in simple way

compile this library

  compile 'com.github.bumptech.glide:glide:4.0.0'

than load image like this

RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.ic_placeholder);
requestOptions.error(R.drawable.ic_error);

Glide.with(context)
     .setDefaultRequestOptions(requestOptions)
     .load(mainMenuDataModelArrayList.get(position)
     .getIMG()).into(holder.imageView);

2. use picasso

compile this library

compile 'com.squareup.picasso:picasso:2.5.2'

than load image like this

Picasso.
  with(context).
  load(url).
  into(imageview);

or try this

 new DownloadImage(imamgeview).execute(url);

create a Async Task

public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;

public DownloadImage(ImageView bmImage) {
    this.bmImage = (ImageView ) bmImage;
}

protected Bitmap doInBackground(String... urls) {
    String urldisplay = urls[0];
    Bitmap mIcon11 = null;
    try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
    } catch (Exception e) {
        Log.d("Error", e.getStackTrace().toString());

    }
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {
    bmImage.setImageBitmap(result);
}
}

Upvotes: 0

Ahmad Aghazadeh
Ahmad Aghazadeh

Reputation: 17131

Can use Picasso library:

add gradle:

compile 'com.squareup.picasso:picasso:2.5.2'

Picasso.with(context).load("http://www.mymartmycart.com/images/detailed/3/4G_CONNECT_M1.jpeg").into(imageView);

more info http://square.github.io/picasso/

Upvotes: -1

Related Questions