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 так що ми можемо зробити тут, якщо не маємо про це ніякого уявлення?
Anand Savjani

2
@ShobhitPuri цей інструмент допоможе вам перевірити кількість методів
Nicholas Ng

Відповіді:


189

Я один з інженерів проекту Fresco. Тож явно я упереджений.

Але не потрібно приймати моє слово за це. Ми випустили зразковий додаток, що дозволяє порівнювати продуктивність п'яти бібліотек - Fresco, Picasso, UIL, Glide та Volley Image Loader. Ви можете отримати його в нашому репо-сервері GitHub .

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

Fresco пропонує функції, які ще не мають Пікассо, UIL та Glide:

  1. Зображення зберігаються не в купі Java, а в купі ashmem. Проміжні байтові буфери також зберігаються у рідній купі. Це залишає набагато більше пам'яті, доступної для програм. Це знижує ризик виникнення OutOfMemoryErrors. Це також зменшує кількість додатків для збору сміття, що призводить до кращих показників.
  2. Прогресивні зображення JPEG можна передавати, як у веб-браузері.
  3. Зображення можна обрізати навколо будь-якої точки, а не лише по центру.
  4. JPEG-зображення можуть бути змінені націльно. Це дозволяє уникнути проблеми OOMing, намагаючись зменшити розмір зображення.

Є багато інших ( див. Нашу документацію ), але це найважливіші.


1
Спасибі, чи можете ви долучити результат "Ми випустили зразок програми, що дозволяє порівняти продуктивність п'яти бібліотек" у табличному форматі з вашою відповіддю?
mmlooloo

1
Фреска має деякі більше можливостей, ніж інші, але також набагато більша ..
Ліга

4
вони додали "s" на звороті посилання. github.com/facebook/fresco/tree/master/samples
JR Tan

@tyronen ім цікавиться Фреско. Чи дозволяє він завантажувати локальні зображення замість мережі? Спасибі
GmloMalo

1
@wedi так.
tyronen

131

Зауважте, що це питання, що ґрунтується на думці, тому я перестав робити фіорди і швидко зробив таблицю

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

Зараз порівняння бібліотеки важке, тому що за багатьма параметрами всі чотири в основному роблять те саме, за винятком Fresco, тому що в ній є ціла купа нових оптимізацій рівня пам’яті. Тож дайте мені знати, чи хочете певні параметри. див. порівняння на основі мого досвіду.

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

* Примітка - Fresco тепер підтримує анімації GIF, а також WebP


1
Мені цікаво нижчі рейтинги "Настроюваність", "Використання мережевих зображень" та "Простота використання" для Fresco. Що лежить в основі цих рейтингів?
tyronen

1
Здебільшого спочатку скористайтеся Fresco, щоб зрозуміти, ця відповідь може розвинутися :)
Vrashabh Irde,

1
@Slartibartfast Чи отримали ви можливість спробувати Fresco та останню версію Glide 3.0? Ви б все одно оцінили їх так само?
Shobhit Puri

2
Ви пропустили один важливий аспект. ... розмір бібліотеки. Це основна причина, чому Picasso та UImageLoader не підтримують GIF. Ліцензії також було б добре включити.
Кодований

3
@AhamadullahSaikat Ті, якими він користувався особисто.
П’єр

112

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


Джерела Пікассо | поза сайтом
(-)
- повільне завантаження великих зображень з Інтернету в ListView
(+)
- розмір бібліотеки Tinny
- невеликий розмір кешу
- простий у використанні
- користувальницький інтерфейс не зависає
- підтримка WebP


Джерела ковзання

(-)
- Великий розмір бібліотеки
(+)
- розмір кеш-пам'яті кеш
- простий у використанні
- підтримка GIF
- підтримка WebP
- швидке завантаження великих зображень з Інтернету в ListView
- інтерфейс не зависає
- BitmapPool для повторного використання пам'яті та таким чином, менші події GC


Універсальні джерела завантажувача зображень

(-)
- обмежена функціональність (обмежена обробка зображень)
- підтримка проекту припинена з 27.11.2015
(+)
- розмір бібліотеки Tinny
- простий у використанні


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

я вважаю за краще використовувати Glide.
Детальніше читайте тут .
Як записати кеш на зовнішнє сховище (SD Card) за допомогою Glide.


4
"Досить швидкий завантажувач зображень", здається, суперечить "Програмі заморожування" для Fresco.
TWiStErRob

2
У мене є проект Пікассо в проекті 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. Я думаю, що коли вони були створені розумовим набором Пікассо, було слідування специфікаціям HTTP і нехай сервер вирішує кешування політики та кешування в повному розмірі та змінює розмір за потребою. Glide - це те саме, що слідкувати за специфікацією HTTP, але намагається мати менший слід пам’яті, роблячи різні припущення, такі як кешування змінених зображень замість повних зображень та показ зображень із RGB_565 замість RGB_8888. Обидві бібліотеки пропонують повне налаштування стандартних налаштувань.

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

  4. між 3 великими бібліотеками імен, я думаю, що суттєвих відмінностей немає. Єдина, що виділяється - це фреска, але це тому, що вона має інший підхід і є новою, а не перевіреною битвою.


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

1
THX для виправлення. Минуло деякий час, коли я використовував фейсбук SDK, тому не перевіряв цього. Все-таки їм знадобилося занадто багато часу, щоб туди ввійти.
Егід

1
Через рік, прочитавши це, мені все ще цікаво, чи варто мені використовувати фреску, і я досі не можу зрозуміти, чому я повинен. Поки Glide та Picasso працюють з коробки, Frescoe просто потребує того, щоб ви зробили так багато речей, щоб не виглядати так, як варто і розміру ....
frostymarvelous

Хочу зазначити, що у фрески є проблеми з пам’яттю: github.com/facebook/react-native/isissue/8711
Fabian Zeindl

У мене також виникли проблеми з пам’яттю із фрескою, на жаль, схоже, що це має бути фреска або ковзання, якщо вам потрібна підтримка анімованих gif. Також FWIW ось посилання на деякі додаткові деталі порівняння.
Нік

63

Ні Glide, ні Пікассо не є ідеальними. Те, як Glide завантажує зображення в пам'ять і кешування, краще, ніж у Пікассо, що дозволяє завантажувати зображення набагато швидше. Крім того, це також допомагає запобігти додатку від популярного OutOfMemoryError. Завантаження анімації GIF - це вбивча функція, яку надає Glide. У будь-якому випадку Пікассо декодує зображення кращої якості, ніж Glide.

Якому я віддаю перевагу? Хоча я дуже довго використовую Пікассо, мушу визнати, що зараз я віддаю перевагу Glide. Але я б рекомендував вам змінити формат Bitmap на ARGB_8888 і дозволити Glide кешувати як повнорозмірне зображення, так і змінити розмір першого. Решта добре зробили б свою роботу!

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

+1 Для помічника палітри Picasso .

Є пост, який багато говорить про пост Пікассо проти Гліде


Відмінна стаття. Я переходжу на Glide зараз. Навіть краще, ніж Пікассо - це не те, що я мав на увазі. :)
Суфіан

1
Я бачу одну проблему: Glide вимагає API 10. Це трохи проблема, оскільки я не можу скинути підтримку API 9 з мого додатка. Інакше, безумовно, кращий шлях.
Суфіан

Чи можете ви пояснити, чому ви використовуєте api 9? просто цікаво ...
Даніель Гомес Ріко

Якщо я чогось не пропускаю, це підтримка всіх версій пряників.
Суфіан

1
Я думаю, що це трохи суб’єктивно. Але краще підтримувати якомога більше пристроїв / версій. Ні? :)
Суфіан

18

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

Фреско вийшов за межі еталону, тому що для проекту, який я проводив тест, ми не хотіли переробляти макети (через вигляд Драуї).

Що я рекомендую - Universal Image Loader через його налаштування, споживання пам’яті та баланс між розмірами та методами.

Якщо у вас є невеликий проект, я б поїхав на Glide (або спробував Fresco).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.