Soru & Cevap

Url'den image alma

28.02.2014 - 07:50

Merhabalar, url'den image almaya çalışıyorum. Ancak null dönüyor.

main : 

[code]donwloadImage down = new donwloadImage(); [/code]

[code] down.execute("http://img1.loadtr.com/k-417911-k%C4%B1zg%C4%B1n_ikonu.jpg");  // downloadImage asynctask extend etmiş bir sınıf. [/code]

 

downloadImage : 

[code]

try{

            URL url = new URL(params[0]);
            HttpURLConnection connection= (HttpURLConnection)url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream inputStream = connection.getInputStream();
            bitmap = BitmapFactory.decodeStream(inputStream);

            imageView.setImageBitmap(bitmap);

}

[/code]

267 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user bulentcetin2
bulentcetin2
12.11.2014 - 11:16

Merhabalar ... Ben kodu uyguladım fakat söyle bir olay oluyor.. Örneğin 10 tane resim var ekranınımda.Bunlara default bir resim setledim.Sonra sırayla urlden resimleri getiriyor.Daha sonra ekranı aşagıya kaydırıp yukarı cıkaraınca üstte getirdiği resimler kayboluyor default resim görünüyor.SOnra tekrar urlden resimleri getiriyor..Sonucta resimleri urlden cekmişti farklı bir ekranada yönlendirme yapmadım.scrolu kaydırmam neden böyle bır etkı yapıyor ki...Aynı kodu kullandım acaba neden böyle oluyor...Yardım ederseniz sevinirim.

sorusuna cevaben ...

picasso kullanmanı tavsiye ederim. http://square.github.io/picasso/

kütüphanesine buradan ulaşabilirsin.

şimdi öncelikle listview in çalışma mantığı sürekli yenileme işlemi yapmasıdır. yani sen listeyi oynattıkça liste yeniden çizilir. dolayısı ile liste verileri yeniden okunur. Eğer sen listeye ekstra bir resim eklemek istersen mutlaka if ve else kullanman lazım. bu durumda örnek olarak

String resimLink=list.get(position).getResimLink();
            if (!TextUtils.isEmpty(resimLink)) {
                Picasso.with(context).load(resimLink).resize(w, h).placeholder(R.drawable.android_icon).resize(w, h).error(R.drawable.yok).resize(w, h).into(holder.resimIV);
            }else {
                Picasso.with(context).load(R.drawable.yok).resize(w, h).placeholder(R.drawable.android_icon).resize(w, h).error(R.drawable.yok).resize(w, h).into(holder.resimIV);

            }

yani link var ise şunu yap yok ise bunu yap.

mantık seninkindede aynı doğru anladıysam.

yani position x ise şu resim olsun değilse diğerleri diye ayırırsan sanırım olacak.

Profile picture for user bulentcetin2
bulentcetin2
01.03.2014 - 08:45

https://code.google.com/p/android-query/downloads/list

Buradan kütüphaneyi indirdikten sonra projenin libs klasörüne kopyala. Daha sonra;

[code]

query=new AQuery(context);

query.ajax(url,Bitmap.class,0,new AjaxCallback<Bitmap>(){
                    @Override
                    public void callback(String url, Bitmap object, AjaxStatus status) {
                        super.callback(url, object, status);
                        imageView.setImageBitmap(object);
                    }
                });[/code]

kodunu yazman yeterli. İnternetten olacaksa izinlerini unutma.

Url kısmına urlni yazarsan yeterli.

picture-2176-1429627808.jpg
bekirdursun
28.02.2014 - 11:46

Aşağıdaki kodu ekle;

    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;
    
    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = 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.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }
    
    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
    
    }

 

Daha sonra da bunu;

        new DownloadImageTask((ImageView) findViewById(R.id.image)).execute(RESIM_URL_I__BURAYA_GELECEK);

 

Son olarak imageview içine bir de default image ekle, daha şık durur.

Oğuzhan
12.11.2014 - 10:42
Merhabalar ... Ben kodu uyguladım fakat söyle bir olay oluyor.. Örneğin 10 tane resim var ekranınımda.Bunlara default bir resim setledim.Sonra sırayla urlden resimleri getiriyor.Daha sonra ekranı aşagıya kaydırıp yukarı cıkaraınca üstte getirdiği resimler kayboluyor default resim görünüyor.SOnra tekrar urlden resimleri getiriyor..Sonucta resimleri urlden cekmişti farklı bir ekranada yönlendirme yapmadım.scrolu kaydırmam neden böyle bır etkı yapıyor ki...Aynı kodu kullandım acaba neden böyle oluyor...Yardım ederseniz sevinirim..