问题描述:

I used the code below to fetch the image from a url but it doesn't working for large images.

Am I missing something when fetching that type of image?

imgView = (ImageView)findViewById(R.id.ImageView01);

imgView.setImageBitmap(loadBitmap("http://www.360technosoft.com/mx4.jpg"));

//imgView.setImageBitmap(loadBitmap("http://sugardaddydiaries.com/wp-content/uploads/2010/12/how_do_i_get_sugar_daddy.jpg"));

//setImageDrawable("http://sugardaddydiaries.com/wp-content/uploads/2010/12/holding-money-copy.jpg");

//Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png");

//imgView.setImageDrawable(drawable);

/* try {

ImageView i = (ImageView)findViewById(R.id.ImageView01);

Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL("http://sugardaddydiaries.com/wp-content/uploads/2010/12/holding-money-copy.jpg").getContent());

i.setImageBitmap(bitmap);

} catch (MalformedURLException e) {

System.out.println("hello");

} catch (IOException e) {

System.out.println("hello");

}*/

}

protected Drawable ImageOperations(Context context, String string,

String string2) {

// TODO Auto-generated method stub

try {

InputStream is = (InputStream) this.fetch(string);

Drawable d = Drawable.createFromStream(is, "src");

return d;

} catch (MalformedURLException e) {

e.printStackTrace();

return null;

} catch (IOException e) {

e.printStackTrace();

return null;

}

}

网友答案:

see this good example that loads image from server. blog.sptechnolab.com/2011/03/04/android/android-load-image-from-url/.

网友答案:

You're trying to download the Large Image from within the UI Thread....This will cause an ANR (Application not Responding)

Use AsyncTask to download the images, that way, a seperate thread will be used for the download and your UI Thread wont lock up.

网友答案:

If you want to download the image very quickly then you can use AQuery which is similar to JQuery just download the android-query.0.15.7.jar

Import the jar file and add the following snippet

 AQuery aq = new AQuery(this);   
 aq.id(R.id.image).image("http://4.bp.blogspot.com/_Q95xppgGoeo/TJzGNaeO8zI/AAAAAAAAADE/kez1bBRmQTk/s1600/Sri-Ram.jpg");   

// Here R.id.image is id of your ImageView 
// This method will not give any exception 
// Dont forgot to add Internet Permission
网友答案:
        public class MyImageActivity extends Activity 
    {
        private String image_URL= "http://home.austarnet.com.au/~caroline/Slideshows/Butterfly_Bitmap_Download/slbutfly.bmp"; 

        private ProgressDialog pd;
        private Bitmap bitmap;
        private ImageView bmImage;
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                bmImage  = (ImageView)findViewById(R.id.imageview);
                pd = ProgressDialog.show(this, "Please Wait", "Downloading Image");
                DownloadWebPageTask task = new DownloadWebPageTask();
                task.execute(new String[] { image_URL }); 
                 // You can also give more images in string array

        }
        private class DownloadWebPageTask extends AsyncTask<String, Void, Bitmap> 
        {
            // String -->  parameter in execute
            // Bitmap -->  return type of doInBackground and parameter of onPostExecute
            @Override
            protected Bitmap doInBackground(String...urls) {
                String response = "";
                for (String url : urls) 
                {
                    InputStream i = null;
                     BufferedInputStream bis = null;
                     ByteArrayOutputStream out =null;

//             Only for Drawable Image          
//             try
//             {
//                 URL url = new URL(image_URL);
//                 InputStream is = url.openStream();
//                 Drawable d = Drawable.createFromStream(is, "kk.jpg");
//                   bmImage.setImageDrawable(d); 
//             }
//          catch (Exception e) {
//              // TODO: handle exception
//          }

// THE ABOVE CODE IN COMMENTS WILL NOT WORK FOR BITMAP IMAGE                    

 try
                     {
                         URL  m = new URL(image_URL);
                         i = (InputStream) m.getContent();
                         bis = new BufferedInputStream(i, 1024*8);
                         out = new ByteArrayOutputStream();
                         int len=0;
                         byte[] buffer = new byte[4096];
                         while((len = bis.read(buffer)) != -1)
                         {
                             out.write(buffer, 0, len);
                         }
                         out.close();
                         bis.close();

                     byte[] data = out.toByteArray();
                     bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                     }
                     catch (Exception e) 
                     {
                        e.printStackTrace();
                     }
                     }

                return bitmap;
            }

            @Override
            protected void onPostExecute(Bitmap result) 
            {
                if(result!=null)
                bmImage.setImageBitmap(result);
                pd.dismiss();
            }
        }
    }
相关阅读:
Top