Picasso v / s Imageloader v / s Fresco vs Glide [закрыто]


344

Выводы:

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

Вопросы:

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

Я также интересуюсь фресками. Кто-нибудь может объяснить разницу?
Крит,


8
Это не место, чтобы задавать вопросы, основанные на мнении
danny117

16
@ danny117 так что мы можем сделать здесь, если у нас нет никаких идей об этом?
Ананд Савжани

2
@ShobhitPuri этот инструмент поможет вам проверить количество методов
Николас Нг

Ответы:


189

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

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

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

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

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

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


1
Спасибо, можете ли вы добавить в ответ результат «Мы выпустили пример приложения, позволяющего сравнить производительность пяти библиотек» в табличном формате?
mmlooloo

1
Фреска имеет больше функций, чем другие, но также намного больше ..
Лиги

4
они добавили 's' в конце ссылки. github.com/facebook/fresco/tree/master/samples
JR Tan

@tyronen я интересуюсь фреской. Позволяет ли вместо этого загружать локальные образы из сети? Спасибо
GmloMalo

1
@ Да, это так.
Tyronen

131

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

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

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

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

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


1
Мне любопытно узнать о более низких показателях «Настраиваемость», «Использование сетевого образа» и «Простота использования» для Fresco. На чем основаны эти рейтинги?
Тайронен

1
В основном при первом использовании, буду использовать Фреско, чтобы понять, этот ответ может эволюционировать :)
Vrashabh Irde

1
@Slartibartfast У вас была возможность попробовать Fresco и последнюю версию Glide 3.0? Вы бы все равно оценили их так же?
Шобхит Пури

2
Вы пропустили один важный аспект. ... размер библиотеки. Это основная причина, почему Picasso и UImageLoader не поддерживают GIF. Лицензии также было бы хорошо включить.
Codeversed

3
@AhamadullahSaikat Те, которые он использовал лично.
Пьер

112

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


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


Glide sources

(-)
- Большой размер библиотеки
(+)
- Небольшой размер кэша
- Простой в использовании
- Поддержка 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.


4
«Довольно быстрый загрузчик изображений», кажется, противоречит «заморозке приложений» для Fresco.
TWiStErRob

2
У меня есть Picasso в проекте Xamarin, и использование памяти было ОГРОМНЫМ (используется для загрузки изображений в представление переработчика). OutOfMemoryвсе время ...
Вахид Амири

У @ VSG24 есть 2 варианта: 1) вы используете его неправильно. 2) Android (java) версия lib не одинакова для Xamarain
Владимир Кулик

1
В качестве негатива по скольжению (-) я испытал много мерцания. Загруженные изображения будут «переустанавливаться» из ниоткуда
FRR

1
@RJFares Я недавно попробовал последнюю версию, которую вы можете использовать, ImagePipelineConfig.setDownsampleEnabled(true)чтобы предотвратить ее зависание. Но иногда пропускают кадры GIF. Если вы показываете только статические изображения в своем приложении, я думаю, вы можете попробовать.
Кими Чиу

109

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

ответы

  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 создает у меня впечатление, что это тоже Относительно прост в использовании и настройке. Таким образом, при выборе любой из этих 3 библиотек вы не можете принять неправильное решение, это скорее вопрос личного вкуса.Как, например, SDK facebook официально не выпущен на mavenCentral. Я не пользовался Facebook SDK с сентября 2014 года, и, кажется, они выпустили первую версию онлайн на mavenCentral в октябре 2014 года. Так что пройдет некоторое время, прежде чем мы сможем получить какую-либо хорошее мнение об этом.

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


3
Незначительная мелочь: кажется, что SDK Facebook был официально доступен как AAR на Maven Central некоторое время. developers.facebook.com/docs/android/…
orip

1
спасибо за исправление, прошло некоторое время с тех пор, как я использовал SDK facebook, поэтому я не проверял это. Тем не менее, это заняло у них слишком много времени, чтобы надеть там.
Aegis

1
Спустя год после прочтения этого, я все еще задаюсь вопросом, должен ли я использовать Фреску, и я все еще не понимаю, почему я должен. В то время как Глайд и Пикассо работают из коробки, Фреско просто нужно, чтобы вы сделали так много вещей, что это не выглядит так, как будто оно того стоит и его размер ....
морозный

Я хочу отметить, что у фрески есть проблемы с памятью: github.com/facebook/react-native/issues/8711
Фабиан Цейндль,

Я также испытывал проблемы с памятью на фреске, к сожалению, кажется, что это должна быть либо фреска, либо скольжение, если вам нужна поддержка анимированных GIF. Также FWIW вот ссылка на некоторые дополнительные детали сравнения.
Ник

63

Ни Глайд, ни Пикассо не идеальны. 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 сообщение


Отличная статья. Я перехожу на Glide сейчас. Даже лучше, чем Пикассо, не то, что я имел в виду. :)
Sufian

1
Одна проблема, которую я вижу, заключается в том, что Glide требует API 10. Это небольшая проблема, поскольку я не могу отказаться от поддержки API 9 из своего приложения. В противном случае, безусловно, лучший путь.
Суфиан

Можете ли вы объяснить, почему вы используете API 9? просто любопытно ...
Даниэль Гомес Рико

Если я что-то не упустил, это поддержка всех версий Gingerbread.
Суфиан

1
Я думаю, что это немного субъективно. Но лучше поддерживать как можно больше устройств / версий. Нет? :)
Суфий

18

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.