Подтвердить что ты не робот

Зачем использовать библиотеку Android Picasso для загрузки изображений?

Зачем мне загружать изображения через библиотеку Picasso, а не просто использовать этот код:

private Bitmap DownloadImage(String URL) 
{
    Bitmap bitmap = null; 
    InputStream in = null; 

    try 
    {
        in = OpenHttpGETConnection(URL);
        bitmap = BitmapFactory.decodeStream(in); in.close();
    } 
    catch (Exception e) 
    {
        Log.d("DownloadImage", e.getLocalizedMessage());
    }

    return bitmap; 
}

Другой вопрос:

Загружает ли Picasso изображение в пользовательском интерфейсе или фоновом потоке?

4b9b3361

Ответ 1

Только для записи для любого нового для Android или, возможно, перехода на Android из iOS..........

Пока что-то кардинально не изменится, вам абсолютно необходимо использовать Пикассо. Не шутка.

Честно говоря, это так просто. Преимущества невероятны.

Это легко использовать:

Picasso.
  with(State.mainContext).
  load(parseImageFile.getUrl()).
  into(null);

Вы очень просто:

должен выполнять кэширование и потоковую обработку изображений с помощью изображений на Android.

Это так просто. Если вы не хотите писать с нуля, вы просто должны использовать Picasso.

Обратите внимание, что ParseImageFile существенно не работает - он абсолютно бесполезен в кэшировании и т.д. Есть замечательные альтернативы Пикассо (такие как Universal Image Loader, проверьте его), но ни одна из них не работает, как Пикассо, на данный момент 2014 года.

Примечание, если вы перейдете к супер-продвинутым материалам. лучше всего, чем Picasso, - сделать переезд на Volley. но это огромный скачок.

Обратите внимание, что прокрутка ListView на Android очень много, гораздо сложнее, чем прокрутка таблицы на iOS. Вы могли бы сказать, что Android + Picasso больше похож на ситуацию в iOS, где все работы уже сделаны для прокрутки больших табличных представлений с изображениями.

На сегодняшний день Picasso - просто - центральная часть любого приложения Android. Слава богу, это одна строка кода - никакой настройки, ничего.

Опять же, единственное, что лучше, чем "Пикассо", если вы переедете на "Воллей".

Кстати, отличная длинная статья о Volley v. Picasso, если вам это нужно...

http://www.bignerdranch.com/blog/solving-the-android-image-loading-problem-volley-vs-picasso/

Ответ 2

Picasso загружает изображение в другой поток, и он управляет вами:

  • заполнитель, тем временем изображение все еще загружается
  • изменение размера
  • обрезка/центрирования/масштабирования
  • кеширование (вам не нужно скачивать изображение каждый раз)
  • он даже делает "изображение исчезает", которое сейчас популярно/нормально

Это очень просто, вот пример:

    Picasso.with(context)
           .load(url)
           .placeholder(R.drawable.placeholder)
           .resize(imgWidth, imgHeight)
           .centerCrop()
           .into(image);

Ответ 3

Я всегда использовал Picasso Library для изображений.
Это очень полезно для управления изображениями и не беспокоиться о проблеме памяти.
Когда я загружаю изображения с сервера или json, я использовал

 Picasso.with(context).load("image url").fetch();

И я храню этот URL-адрес изображения в базе данных или где-то еще. Теперь мы можем использовать это изображение в любом месте (в автономном режиме).

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

Ответ 4

Picasso.with(this).load("http://webneel.com/wallpaper/sites/default/files/images/04-2013/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView,
  new Callback() {@
    Override
    public void onSuccess() {}@
    Override
    public void onError() {}
  });

Вы должны загрузить изображения через библиотеку Picasso по следующим причинам:

  • Вы можете поместить местозаполнитель в случае, если для загрузки изображения требуется некоторое время.
  • fit() - иногда некоторые изображения не загружаются в представлении изображения из-за размера. Этот метод поможет вам загрузить большие изображения.
  • onSuccess() - вы можете выполнить некоторые действия, когда изображение загрузится успешно.
  • onError() - вы можете выполнить некоторые действия при возникновении проблемы с загрузкой изображения.

Ответ 5

Вам следует использовать библиотеку загрузчика изображений, такую ​​как Picasso, Volley или Universal Image Loader, потому что они выполняют следующие действия, которые ваш код не делает:

  • Эффективная многопоточная сеть (конечно, по фоновым потокам)
  • Объединение нескольких идентичных запросов в один сетевой вызов
  • Отмена ожидающих запросов, особенно при переработке элементов ListView
  • Кэш-память и диск с различными политиками истечения срока действия
  • Снижение масштаба изображения до размера целевого представления для повышения производительности и сокращения использования памяти.
  • Обновление пакетных пользовательских интерфейсов для улучшения пользовательского интерфейса (по крайней мере для Volley и Picasso).

Кстати, вы никогда не должны выполнять сетевые запросы в потоке пользовательского интерфейса, а поскольку HoneyComb, Android не позволяет вам это делать.

Ответ 6

Я знаю, что Picasso - потрясающая библиотека для управления изображениями в ListView и GridView, но среди всех опций, включая Picasso, я использую GLIDE...

Он действительно управляет загрузкой и кешированием Perfectly... (я не мог заставить Picasso использовать кешированные изображения после завершения загрузки, но Glide сделал это просто как кусок пирога).

Вот страница Github GLIDE:

https://github.com/bumptech/glide

С уважением....

Ответ 7

Если вы будете использовать основной метод загрузки изображения из сети, тогда потребуется больше кода. Но если мы будем использовать стороннюю библиотеку, такую ​​как picasso, тогда мы достигнем нашей цели в нескольких строках кода.
И библиотека Пикассо - лучшая и самая простая, что я нашел до сих пор. Нам нужно только написать следующее, чтобы загрузить изображение из Интернета с помощью picasso.

Picasso.with(this)
.load("YOUR IMAGE URL HERE")
.placeholder(Your Drawable Resource) //this is optional the image to display while the url image is downloading
.error(Your Drawable Resource)         //this is also optional if some error has occurred in downloading the image this image would be displayed
.into(imageView);

Но если мы не будем использовать библиотеку picasso или любую другую библиотеку, нам может понадобиться сделать это с помощью AsyncTask, которая потребует больше строк кода.

Источник: Учебник по Picasso для Android

Ответ 8

Добавьте в свою build.gradle(Module:app)

следующую зависимость:
compile 'com.github.bumptech.glide:glide:3.6.1'