Picasso v/s Imageloader v/s Fresco vs Glide

Выводы:

  1. Разница между Picasso v/s ImageLoader здесь...
  2. Информация о библиотеке GLIDE здесь...
  3. Недавно Facebook выпустил новую библиотеку изображений под названием Fresco.

Вопросы:

  1. В чем разница между Picasso v/s Imageloader v/s Fresco
  2. Когда мы можем использовать Glide
  3. Какая библиотека лучше всего использовать?
  4. Если каждая библиотека имеет свое значение, каковы они?

6 ответов

Я один из инженеров проекта Fresco. Очевидно, я предвзят.

Но вы не должны поверить на мое слово. Мы выпустили пример приложения, которое позволяет сравнивать производительность пяти библиотек - Fresco, Picasso, UIL, Glide и Volley Image Loader - бок о бок. Вы можете получить его в нашем репозитории GitHub.

Я должен также указать, что фреска доступна на Maven Central, как com.facebook.fresco:fresco,

Fresco предлагает функции, которых у Picasso, UIL и Glide еще нет:

  1. Изображения хранятся не в куче Java, а в куче пепла. Промежуточные байтовые буферы также хранятся в собственной куче. Это оставляет намного больше памяти для приложений. Это уменьшает риск OutOfMemoryErrors. Это также уменьшает количество приложений для сбора мусора, что приводит к повышению производительности.
  2. Прогрессивные изображения JPEG могут передаваться в потоковом режиме, как в веб-браузере.
  3. Изображения могут быть обрезаны вокруг любой точки, а не только в центре.
  4. Размер изображений JPEG можно изменить в исходном размере. Это позволяет избежать проблемы OOMing при попытке уменьшить изображение.

Есть много других ( см. Нашу документацию), но они являются наиболее важными.

Имейте в виду, что это вопрос, основанный на высоком мнении, поэтому я перестал делать фьорды и сделал быстрый стол

введите описание изображения здесь

Теперь сравнение библиотек сложно, потому что по многим параметрам все четыре в значительной степени делают одно и то же, за исключением, возможно, Fresco, потому что в нем есть целая куча новых оптимизаций уровня памяти. Итак, дайте мне знать, если вы хотите, чтобы некоторые параметры увидеть сравнение на основе моего опыта.

Если использовать Fresco меньше всего, ответ может измениться, поскольку я продолжаю использовать и понимать его для текущих эксплойтов. used personally использует библиотеку по крайней мере один раз в завершенном приложении.

* Примечание - Fresco теперь поддерживает GIF, а также анимацию WebP.

Источники фресок | вне сайта
(-)
- Огромный размер библиотеки
- Нет обратного вызова с просмотром, параметры растрового изображения
- SimpleDraweeView не поддерживает wrap_content
- Огромный размер кеша
(+)
- Довольно быстрый загрузчик изображений (для небольших && средних изображений)
- Много функциональности (потоковая передача, инструменты рисования, управление памятью и т. Д.)
- Возможность настройки непосредственно в XML (например, закругленные углы)
- поддержка GIF
- Поддержка WebP и Animated Webp


Пикассо источники | вне сайта
(-)
- Медленная загрузка больших изображений из Интернета в ListView
(+)
- маленький размер библиотеки
- небольшой размер кеша
- Прост в использовании
- интерфейс не замораживается
- поддержка WebP


Источники скольжения

(-)
- Большой размер библиотеки
(+)
- маленький размер кеша
- Прост в использовании
- поддержка GIF
- поддержка WebP
- Быстрая загрузка больших изображений из Интернета в ListView
- интерфейс не замораживается
- BitmapPool для повторного использования памяти и, следовательно, меньших событий GC


Источники Universal Image Loader

(-)
- Ограниченная функциональность (ограниченная обработка изображений)
- Поддержка проекта прекращена с 27.11.2015
(+)
- маленький размер библиотеки
- Прост в использовании


Протестировано мной на SGS2 (Android 4.1) (WiFi 8,43 Мбит / с)
Официальные версии для Java, а не для Xamarin!
19 октября 2015

Я предпочитаю использовать Glide.
Узнайте больше здесь.
Как записать кэш на внешнее хранилище (SD-карту) с помощью Glide.

Эти ответы полностью мое мнение

ответы

  1. Picasso - это простой в использовании загрузчик изображений, также как и Imageloader. Fresco использует другой подход к загрузке изображений, я еще не использовал его, но для меня это больше похоже на решение для получения изображения из сети и его кэширования, а затем показа изображений. затем наоборот, как Picasso/Imageloader/Glide, что для меня больше Показ изображения на экране, который также позволяет получать изображения из сети и кэшировать их.

  2. Glide пытается быть несколько взаимозаменяемыми с Picasso. Я думаю, что когда они были созданы, мышление Picasso следовало спецификациям HTTP и позволяло серверу выбирать политики кэширования и кэшировать в полном размере и изменять размер по требованию. Glide - это то же самое, что и следование спецификации HTTP, но пытается уменьшить объем памяти, делая некоторые другие предположения, такие как кэширование изображений с измененным размером вместо полноразмерных изображений и отображение изображений с RGB_565 вместо RGB_8888. Обе библиотеки предлагают полную настройку параметров по умолчанию.

  3. Относительно того, какую библиотеку лучше использовать, сказать сложно. Picasso, Glide и Imageloader - это уважаемые и хорошо протестированные библиотеки, которые легко использовать с настройками по умолчанию. Как Picasso, так и Glide требуется только 1 строка кода для загрузки изображения, а также заполнитель и изображение ошибки. Настройка поведения также не требует такой большой работы. То же самое касается Imageloader, который также является более старой библиотекой, чем Picasso и Glide, однако я не использовал его, поэтому не могу сказать много о производительности / использовании памяти / настройках, но просмотр readme на github создает у меня впечатление, что это тоже Относительно прост в использовании и настройке. Поэтому, выбирая любую из этих трех библиотек, вы не можете принять неправильное решение, это скорее вопрос личного вкуса. Что касается фрески, то я считаю, что это еще одна библиотека на Facebook, поэтому мы должны посмотреть, как это сработает для них, пока что послужной список не настолько хорош. Как, например, SDK facebook до сих пор официально не выпущен на mavenCentral Я не пользовался Facebook SDK с сентября 2014 года, и кажется, что они выпустили первую версию онлайн на mavenCentral в октябре 2014 года. Так что пройдет некоторое время, прежде чем мы сможем получить какие-либо хорошее мнение об этом.

  4. Я думаю, что между тремя громкими библиотеками нет существенных различий. Единственное, что выделяется - это фреска, но это потому, что у нее другой подход, он новый и не испытан в бою.

Ни Глайд, ни Пикассо не идеальны. Glide загружает изображение в память и выполняет кэширование лучше, чем Picasso, который позволяет загружать изображение намного быстрее. Кроме того, это также помогает предотвратить популярное приложение OutOfMemoryError. Загрузка GIF-анимации - это функция убийства, предоставляемая Glide. В любом случае Пикассо декодирует изображение лучшего качества, чем Glide.

Какой из них я предпочитаю? Хотя я использую Пикассо в течение очень долгого времени, я должен признать, что теперь я предпочитаю Glide. Но я бы порекомендовал вам изменить формат растрового изображения на ARGB_8888 и позволить Glide сначала кэшировать как полноразмерное изображение, так и его размер. Остальное сделало бы вашу работу великолепно!

  • Количество методов Пикассо и Глайда составляет 840 и 2678 соответственно.
  • Размер Picasso (v2.5.1) составляет около 118 КБ, в то время как Glide (v3.5.2) составляет около 430 КБ.
  • Glide создает кэшированные изображения по размеру, а Picasso сохраняет полное изображение и обрабатывает его, поэтому при загрузке оно показывается быстрее с Glide, но использует больше памяти.
  • Glide использует меньше памяти по умолчанию с RGB_565,

+1 для помощника Палиссо Пикассо.

Есть пост, в котором много говорится о посте Пикассо против Glide

Я хочу поделиться с вами тестом, который я сделал для Picasso, Universal Image Loader и Glide: https://bit.ly/1kQs3QN

Fresco был вне эталона, потому что для проекта, в котором я проводил тестирование, мы не хотели реорганизовывать наши макеты (из-за представления Drawee).

Я рекомендую Universal Image Loader из-за его настройки, потребления памяти и баланса между размером и методами.

Если у вас небольшой проект, я бы выбрал Glide (или попробую Fresco).

Другие вопросы по тегам