Пикассо v/s Imageloader v/s Fresco vs Glide

Выводы:


Вопросы:

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

Ответ 1

Я один из инженеров проекта Fresco. Поэтому, очевидно, я предвзятый.

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

Я также должен отметить, что Fresco доступна на Maven Central, как com.facebook.fresco:fresco.

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

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

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

Ответ 2

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

enter image description here

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

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

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

Ответ 3

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

Ответы

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

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

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

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

Ответ 4

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


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


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

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


Источники универсального изображения

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


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

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

Ответ 5

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

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

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

+1 Для Picasso Помощник палитры.

Есть сообщение, в котором много говорится о Picasso vs Glide post

Ответ 6

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

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

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

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