2015-12-21 3 views
0

Я загружаю растровое изображение из твиттера. Я использую ниже кодРастровое изображение не загружается в Imageview

private class getBitmapFromLink extends AsyncTask<String, Void, Bitmap> { 
    private ImageView imgView; 

    public getBitmapFromLink(ImageView imgView) { 
     this.imgView = imgView; 
    } 

    @Override 
    protected Bitmap doInBackground(String... params) { 
     Bitmap myBitmap; 
     try { 
      URL url = new URL(params[0]); 
      HttpURLConnection connection = (HttpURLConnection) url 
        .openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 
      myBitmap = BitmapFactory.decodeStream(input); 
      return myBitmap; 
     } catch (IOException e) { 
      Log.v("BITMAP", e.getMessage()); 
      return null; 
     } catch (Exception e) { 
      Log.v("BITMAP", e.getMessage()); 
      return null; 
     } 

    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 
     imgView.setImageBitmap(result); 
     imgView.invalidate(); 
    } 

} 

Когда я отладки myBitmap = BitmapFactory.decodeStream(input); линии он непосредственно прийти поймать блок и на возвратной нулевой линии. Во время отладки я попытался напечатать сообщение об ошибке в журналах, но не выполнил эту строку и напрямую пришел к выводу.

Заранее спасибо

+0

Действительно ли URL действителен? Почему вы не используете Picasso или Fresco для работы с картинками? – Blackbelt

+0

Да. url действителен - http://pbs.twimg.com/media/CWgUjyHUAAA7eZ3.jpg –

+0

использовать пикассо для загрузки изображения с URL-адреса, вы можете проверить примеры здесь http://stackoverflow.com/questions/20181491/use-picasso-to -get-a-callback-with-a-bitmap –

ответ

0

Вы можете использовать универсального загрузчика Image и чем

imageLoader = ImageLoader.getInstance(); // Get singleton instance 
    ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(ProfileScreen.this)); 
    imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance(); 
    imageOptions = new DisplayImageOptions.Builder() 
      .showImageOnFail(R.drawable.user_icon) 
      .showImageOnLoading(R.drawable.user_icon) 
      .showImageForEmptyUri(R.drawable.user_icon) 
      .cacheInMemory(true) 
      .resetViewBeforeLoading(true) 
      .build(); 

И чем там, где вы получите URL использовать эти строки кода

 iimageLoader.displayImage("your url", imgView, imageOptions); 

          imageLoader.loadImage("your url", new SimpleImageLoadingListener() { 
           @Override 
           public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
            // Do whatever you want with Bitmap 
            imgView.setImageBitmap(loadedImage); 

           } 
          }); 

Вы можете также используйте библиотеку Picasso для выполнения вашей операции ... для этого вы можете использовать t hese строки кода для него

Picasso.with(getContext()).load("your url").into(new Target() { 
       @Override 
       public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
        //do what ever you want with your bitmap 
        imgView.setImageBitmap(loadedImage); 
       } 

       @Override 
       public void onBitmapFailed(Drawable errorDrawable) { 

       } 

       @Override 
       public void onPrepareLoad(Drawable placeHolderDrawable) { 

       } 
      }); 
+0

@ unflagged.destination ... Является ли это решение полезным для вас ... PLZ проголосовать или принять, если это полезно для вас –

Смежные вопросы