Загрузка изображения для Android - Volley vs Picasso

ищу решение для загрузки / кэширования изображений с открытым исходным кодом.

Я ищу в:

Google»залп,

Площадь'с Пикассо

Универсальный загрузчик изображений

Я хочу иметь возможность обрабатывать асинхронные загрузки изображений с диска, а также по сети, однако яя не уверен, если Googleзалповая ручкаЗагрузка с диска.

Разрешает ли Volley загрузку ресурсов с диска ??

Пример того, что я хотел бы сделать, доступен с AQuery.

 David Rabinowitz23 дек. 2013 г., 16:00
Обратите внимание на хороший ответ вstackoverflow.com/questions/19995007/...

Ответы на вопрос(6)

Решение Вопроса

не нашел какой-либо класс загрузки ресурса с диска ..

 Asthme11 сент. 2013 г., 20:43
@ Патрик Пикассо хорош.
 Patrick19 июн. 2013 г., 03:19
это, похоже, так, к сожалению. Мне понравилась эта функция Picaso, поэтому мне придется выбирать ....

нужно взять DiskLruCache (или гибридный кэш-память или диск, если хотите) и заставить его реализовать интерфейс Volley ImageCache.

В этой записи блога подводится итог того, как реализовать дисковый кеш с помощью Volley для загрузки изображений:http://blogs.captechconsulting.com/blog/raymond-robinson/google-io-2013-volley-image-cache-tutorial.

 rdrobinson303 июн. 2013 г., 17:06
Ах, мои извинения. Залп, являющийся библиотекой сетевых запросов, я предположил, что вы после кеша с диска Насколько я знаю, у него нет классов для загрузки ресурсов с диска.
 Patrick03 июн. 2013 г., 15:59
спасибо за комментарий, но я ищу способ загрузки существующих изображений из файлов, а не кэширования. Я надеялся, что Volley справится с загрузкой изображений асинхронно и со всеми проблемами производительности при загрузке изображений.
 Itai Hanski01 авг. 2013 г., 10:13
Это н'это правда. смотреть наCacheDispatcher а такжеDiskBaseCache занятия в волейбольном источнике.
 rdrobinson310 сент. 2013 г., 15:47
Ты прав. В начале было мало документации. Вскоре после того, как я написал оригинальный блог, я выяснил, каков подход к реализации Volley, и обновил блог, чтобы отразить правильный подход.

все в порядке с новым / менее стабильным программным обеспечением, я только что выпустил библиотеку с открытым исходным кодом под названием Glide:https://github.com/bumptech/glide

Это'Он предназначен для эффективной загрузки любого изображения, к которому можно получить InputStream. Он включает в себя некоторые базовые реализации загрузки http / файлов, но также позволяет вам подключать свои собственные или использовать некоторую внешнюю библиотеку (например, Volley) через обратные вызовы.

Он включает в себя кэширование памяти и диска, а также переработку растровых изображений на новых устройствах. Все, что вам нужно сделать, это реализовать интерфейс, чтобы получить входной поток для вашей модели данных (путь / URL / URI и т. Д.) И передать его вместе с любыми преобразованиями, местозаполнителями или анимациями, которые вы хотите, в синглтон Glide.

Мы рады поговорить с вами или с любопытнымиМы широко использовали его в Bump для взаимодействия с различными библиотеками.

 dimsuz04 авг. 2014 г., 09:22
@ Безоблачный привет! Есть ли способ сообщить Glide, какой Bitmap.Config использовать при загрузке растровых изображений? Например. если я хочу заставить какой-то конкретный.
 voghDev17 нояб. 2014 г., 11:00
У него даже есть залповая интеграция! Я'Я посмотрю на это. +1 !!
 LOG_TAG26 сент. 2013 г., 12:29
+1, интересно! Залп естьСобственный класс загрузчика изображений (NetworkImageView), можете ли вы объяснить, в чем преимущество подключения залпа в Glide? почему можетмы напрямую используем NetworkImageView?
 HendraWD10 мая 2016 г., 12:56
@ SamJudd ты сказал "Я использовал Volley для Glide, потому что хотел включить поддержку отображения удаленных изображений, и это была лучшая библиотека для этого »., Каково значение "удаленные изображения " Вот? Насколько я знаю, Glide может легко загружать изображения из сети, просто указав URL. Это утверждение для старой версии Glide?
 Sam Judd05 авг. 2014 г., 00:23
Привет, спасибо за вопрос! К сожалению нетЭто простой способ сделать это. Лучше всего было бы применить преобразование, которое преобразовало растровое изображение в определенный тип, который вы хотите. Glide старается выбрать формат для экономии памяти (RGB_565 равен 2 байта на пиксель, а ARGB_8888 - 4 байта на пиксель), но это не так.сделать это просто, чтобы изменить. Я'Я сделаю все возможное, чтобы сделать это проще в следующей ветке 3.0 :(github.com/bumptech/glide/tree/3.0a)
 Sam Judd18 окт. 2013 г., 04:36
По сути залпКод загрузки изображения в лучшем случае зачаточен. Это'На самом деле, сфокусированный на сетевых операциях, код загрузки изображения выглядит так, будто он был добавлен в качестве запоздалой мысли. Glide дает вам большое количество вещей, которые Volley 's NetworkImageView не делаетt, включая значительно более эффективные кеши дисков и памяти, а также переработку растровых изображений, обработку exif-файлов и большое количество оптимизаций для быстрой и быстрой загрузки изображений. Я использовал Volley для Glide, потому что хотел включить поддержку отображения удаленных изображений, и мне показалось, что это лучшая библиотека для этого.

http://blog.bignerdranch.com/3177-solving-the-android-image-loading-problem-volley-vs-picasso/ (сравнение между старшей версией Пикассо 2.0 против залпа)

Пикассо полностью сосредоточен на загрузке изображений. В результате, если у вас есть причуды в процессе загрузки вашего изображения

Volley, с другой стороны, полностью сосредоточен на обработке отдельных небольших HTTP-запросов. Так что если у вашей обработки HTTP-запроса есть свои причуды, у Volley, вероятно, есть ловушка для вас. Если, с другой стороны, у вас есть странность в обработке изображений, единственная реальная ловушка - это ImageCache. Это'не ничего, но этоЭто не так уж и много. Но у него есть и другие преимущества, например, как только вы определите свои запросы, их использование внутри фрагмента или действия безболезненно. И в отличие от параллельных AsyncTasks

Пикассо делает только одно, а Волли пытается решить более общую проблему.

Android плохо обрабатывает изображения с высоким разрешением. У меня небольшая одержимость паттерном отлова OutOfMemoryError в приложениях для Android. Это кажется нелепой тактикой, но залп - единственный способ надежно справиться с некоторыми сценариями изображения по сравнению с хлопотами с Пикассо ».s масштабирование и подгонка больших изображений правильно. Пикассо неуважатьscaleType атрибут на ваших ImageViews (не уверен, что этоs исправлен в последней версии).

Тест Ex: я обнаружил, что Volley перехватывает OutOfMemoryError при загрузке исходного разрешения изображения вместо миниатюрной версии, по сравнению с версией Picasso нене взорвется (он также перехватывает OutOfMemoryError), но Picasso не может загрузить слишком большие изображения. Волей не только не взрывается, но и волейбол отображает все эти большие изображения !!!

По словам Android HackerКушик Датта:

Тестирование ВСЕГО образа Android и http LibrariesI '

мы тестировали и тестировали множество различных библиотек загрузки изображений и http-запросов, так как несколько из них были выпущены на прошлой неделе.

Расстановка:

AndroidAsync + UrlImageViewHelper (коуш)Залп (гугл)охттп + пикассо (площадь)

Вся поддержка кешированных и условно кешированных ответов, поддержка активности и т. Д.

Мысли:

Пикассо имеет лучший API изображений. Я собираюсь украсть их карри стиль API для моего будущего / текущего материала. Пикассо также заметно медленнее. Особенно на 3g против Wi-Fi. Вероятно, из-за их пользовательского okhttp клиента.UrlImageViewHelper + AndroidAsync - самый быстрый. Игра с этими двумя другими замечательными библиотеками действительно показала, что API изображений довольно устарел.Залп гладкий; Мне очень нравятся их подключаемые бэкенд-транспорты, и в итоге я могу добавить туда AndroidAsync. Приоритет запроса

и отмена управления отличная.

Обновить эти aren 'т действительно http libs. Просто загрузчики изображений. но в комментариях были запросы на сравнение ... Android-Universal-Image-Loader - самый популярный в настоящее время. Высоко настраиваемый.

Запрос; как jquery, но для Android? Я думаю этохорошо, если тыв такие вещи. Дон»не использовать этот хотя; это крэпс в потоке пользовательского интерфейса или что-то. Загрузка нескольких изображений на Nexus 4 в виде списка создала впечатление, что я снова вернулся на свой HTC G1. Основное заикание.

Тесты с кешами понятны:

Холод это новый запуск приложения. Тёплые кеши прозрачны с http-соединениями, предположительно поддерживаемыми.

Холодный теплый (в миллисекундах, среднее из 10 прогонов, очистка данных при каждом прогоне):

Пикассо 12142/11892UrlImage 7378/4525Залп 8292/7520Android-Universal-Image-Loader 14484/11243AQuery 11341/9637 (этот, кажется, блокирует поток пользовательского интерфейса ... нене использовать его)

Вот's база тестового кода:https://github.com/koush/AndroidNetworkBench

Заключение: Эти тесты вряд ли являются окончательными. Я только что проверил одновременный доступ к сети со многими изображениями. По общему признанию, тамбольше для тестирования библиотеки, чем это. Мне нравится, например, как хорошо играет Volley с жизненным циклом Activity. Ни одна из других библиотек не делает этого.

Итак, все, что плывет на твоей лодке, действительно Я (Коуш) хочу залп с Пикассос API.

Просто используйтеPicasso библиотека:

Picasso.with(context).load(new File("/images/oprah_bees.gif")).into(imageView2);

Это позволит вам загрузить конкретныеfile отSD и вы можете передатьimageView тоже, где вы можете установить это изображение.

к Читать дальше вБиблиотека Пикассо

 martyglaubitz07 июн. 2014 г., 15:55
+1 за oprah_bees.gif ^^

Использование:

networkImageView.setImageUrl(Uri.fromFile(newFile(filename)).toString(),mImageFetcher);

Ваш ответ на вопрос