Picasso v / s Imageloader v / s Fresk ve Glide [kapalı]


344

Bulgular:

  1. Picasso v / s ImageLoader arasındaki fark burada ...
  2. GLIDE kütüphanesi hakkında bilgi burada ...
  3. Son zamanlarda Facebook Fresco adlı yeni bir resim kütüphanesi yayınladı

Sorular:

  1. Picasso v / s Imageloader v / s Fresco arasındaki fark nedir
  2. Glide'ı ne zaman kullanabiliriz
  3. Kullanılacak en iyi kütüphane hangisidir.
  4. Her kütüphanenin kendi önemi varsa, bunlar nedir?

Ben de freskle ilgileniyorum. kimse farkı açıklayabilir?
Krit


8
Bu, görüş temelli sorular sormak için yer değil
danny117

16
@ danny117 Peki bu konuda bir fikrimiz yoksa ne yapabiliriz?
Anand Savjani

2
@ShobhitPuri Bu araç yöntem sayısını kontrol etmenize yardımcı olacak
Nicholas Ng

Yanıtlar:


189

Fresco projesindeki mühendislerden biriyim. Açıkçası önyargılıyım.

Ama benim sözümü almak zorunda değilsin. Beş kütüphanenin - Fresco, Picasso, UIL, Glide ve Volley Image Loader - performansını yan yana karşılaştırmanıza olanak tanıyan örnek bir uygulama yayınladık. GitHub deposumuzdan edinebilirsiniz .

Ayrıca Fresco'nun Maven Central'da olduğu gibi işaret etmeliyim com.facebook.fresco:fresco.

Fresco, Picasso, UIL ve Glide'ın henüz sahip olmadığı özellikler sunar:

  1. Görüntüler Java yığınında değil, ashmem yığınında depolanır. Ara bayt tamponları da yerel yığın içinde saklanır. Bu, uygulamaların kullanması için çok daha fazla bellek sağlar. OutOfMemoryErrors riskini azaltır. Ayrıca, uygulamaların yapması gereken çöp toplama miktarını azaltır ve daha iyi performans sağlar.
  2. Aşamalı JPEG görüntüler, tıpkı bir web tarayıcısında olduğu gibi yayınlanabilir.
  3. Görüntüler sadece merkezde değil, herhangi bir nokta etrafında kırpılabilir.
  4. JPEG görüntüler yerel olarak yeniden boyutlandırılabilir. Bu, bir görüntüyü küçültmeye çalışırken OOMing sorununu önler.

Başka birçok şey var ( belgelerimize bakın ), ancak bunlar en önemlileridir.


1
Teşekkürler, "Beş kütüphanenin performansını karşılaştırmanıza olanak tanıyan örnek bir uygulama yayınladık" sonucunu yanıtınıza tablo biçiminde ekleyebilir misiniz?
mmlooloo

1
Fresk diğerlerinden daha fazla özelliğe sahiptir, ama aynı zamanda çok daha büyüktür ..
ligi

4
bağlantının arkasına bir 's' eklediler. github.com/facebook/fresco/tree/master/samples
JR Tan

@tyronen im Fresco ile ilgileniyor. Ağ yerine yerel görüntülerin yüklenmesine izin veriyor mu? Teşekkürler
GmloMalo

1
@ wedi evet öyle.
tyronen

131

Bunun son derece fikir tabanlı bir soru olduğuna dikkat edin, bu yüzden fiyort yapmayı bıraktım ve hızlı bir tablo yaptım

resim açıklamasını buraya girin

Şimdi kütüphane karşılaştırması zordur, çünkü birçok parametrede, muhtemelen Fresco hariç, dördü de aynı şeyi yapar, çünkü içinde bir dizi yeni bellek seviyesi optimizasyonu vardır. deneyimlerime göre bir karşılaştırmaya bakın.

Fresco'yu en az kullandıktan sonra, mevcut istismarlar için kullanmaya ve anlamaya devam ederken cevap gelişebilir. used personallyTamamlanmış bir app kez kütüphane atleast kullanılan bilgi sahibi olmaktır.

* Not - Fresco artık GIF ve WebP animasyonlarını destekliyor


1
Fresco için daha düşük 'Özelleştirilebilirlik', 'Ağ Resmi Kullanımı' ve 'Kullanım kolaylığı' derecelendirmelerini merak ediyorum. Bu derecelendirmelerin temeli nedir?
tyronen

1
Çoğunlukla ilk kullanım, anlamak için biraz daha fazla Fresco kullanacak, bu cevap gelişebilir :)
Vrashabh Irde

1
@Slartibartfast Fresco ve en son Glide 3.0 sürümünü deneme şansınız oldu mu? Yine de aynı şekilde değerlendirir misiniz?
Shobhit Puri

2
Önemli bir yönü kaçırdınız. ... kütüphane boyutu. Picasso ve UImageLoader'ın GIF'i desteklememesinin ana nedeni budur. Lisansların dahil edilmesi de iyi olur.
2'de Kodlanmış

3
@AhamadullahSaikat Şahsen kullandığı.
Pierre

112

Fresk kaynakları | site dışı
(-)
- Büyük kütüphane boyutu - Görünümlü
Geri Arama Yok, Bitmap parametreleri
- SimpleDraweeView wrap_content'i desteklemiyor
- Büyük önbellek boyutu
(+)
- Oldukça hızlı görüntü yükleyici (küçük ve orta görüntüler için)
- Çok işlev (akış, çizim araçları, bellek yönetimi, vb.)
- Doğrudan xml'de kurulum imkanı (örneğin yuvarlak köşeler)
- GIF desteği
- WebP ve Animasyonlu Webp desteği


Picasso kaynakları | site dışı
(-)
- Büyük görüntüleri internetten ListView'e yavaşça yükleme
(+) - Küçük
kütüphane
boyutu - Küçük önbellek boyutu
- Kullanımı basit
- Kullanıcı arabirimi donmaz
- WebP desteği


Kayma kaynakları

(-)
- Büyük kütüphane boyutu
(+)
- Teneke gibi büyük boyutta
- Kullanımda kolay
- GIF desteği
- WebP desteği
- Büyük görüntüleri internetten ListView'e hızlı yükleme
- Kullanıcı arabirimi donmaz
- BitmapPool belleği yeniden kullanmak ve böylece daha az GC olayı


Evrensel Görüntü Yükleyici kaynakları

(-)
- Sınırlı işlevsellik (sınırlı görüntü işleme)
- Proje desteği 27.11.2015 tarihinden bu yana durduruldu
(+)
- Kitaplığın teneke boyutu
- Basit kullanım


SGS2 (Android 4.1) (WiFi 8.43 Mbps) tarafından benim tarafımdan test edildi
Java için resmi sürümler, Xamarin için değil!
19 Ekim 2015

Glide kullanmayı tercih ediyorum.
Daha fazlasını buradan okuyun . Glide ile
Harici Depolama Birimi'ne (SD Kart) önbellek nasıl yazılır .


4
"Oldukça hızlı görüntü yükleyici" Fresco için "Uygulama dondurma" ile çelişiyor gibi görünüyor.
TWiStErRob

2
Bir Xamarin projesinde Picasso var ve bellek kullanımı BÜYÜK (görüntüleri geri dönüşüm görünümünde yüklemek için kullanılır). OutOfMemoryher zaman ...
Vahid Amiri

@ VSG24 2 seçenek vardır: 1) yanlış kullanıyorsunuz. 2) Lib'in Android (java) sürümü Xamarain için aynı değil
Volodymyr Kulyk

1
Bir Glide negatif (-) olarak çok titrek yaşadım. Yüklenen görüntüler hiçbir yerden "yeniden ayarlanamaz"
FRR

1
@RJFares Son sürümü en son denedim, ImagePipelineConfig.setDownsampleEnabled(true)donmasını önlemek için kullanabilirsiniz . Ancak bazen bir GIF'in karelerini atlar. Uygulamanızda yalnızca statik görüntüler görüntülüyorsanız, bunu bir deneyebilirsiniz.
Kimi Chiu

109

Bu cevaplar tamamen benim düşüncem

Yanıtlar

  1. Picasso kullanımı kolay bir görüntü yükleyicidir, Imageloader için de geçerlidir. Fresco görüntü yükleme için farklı bir yaklaşım kullanıyor, henüz kullanmadım ama ağdan görüntü almak ve onları önbelleğe almak için daha sonra görüntüleri gösteren bir çözüm gibi görünüyor. daha sonra Picasso / Imageloader / Glide gibi başka bir yol daha bana ağda görüntü alma ve onları önbelleğe alma da ekranda görüntü gösteriliyor.

  2. Glide Picasso ile biraz değiştirilebilir olmaya çalışır.Onlar oluşturulduklarında, Picasso'nun zihin setinin HTTP spesifikasyonlarını takip ettiğini ve sunucunun önbellekleme politikalarına karar vermesine ve istek üzerine tam boyutta önbellek vermesine izin verdiğini düşünüyorum. Glide, HTTP spesifikasyonunu takip etmekle aynıdır, ancak tam boyutlu görüntüler yerine yeniden boyutlandırılan görüntüleri önbelleğe almak ve RGB_8888 yerine RGB_565 ile görüntüleri göstermek gibi bazı farklı varsayımlar yaparak daha küçük bir bellek alanı elde etmeye çalışır. Her iki kitaplık da varsayılan ayarların tamamen özelleştirilmesini sağlar.

  3. Hangi kütüphanenin en iyisi olduğunu söylemek gerçekten zor. Picasso, Glide ve Imageloader, varsayılan ayarlarla kullanımı kolay, saygın ve iyi test edilmiş kütüphanelerdir. Hem Picasso hem de Glide, bir görüntüyü yüklemek ve bir yer tutucu ve hata görüntüsüne sahip olmak için yalnızca 1 satır kod gerektirir. Davranışı özelleştirmek de bu kadar çalışma gerektirmez. Aynı zamanda Picasso ve Glide'den daha eski bir kütüphane olan Imageloader için de geçerli, ancak bunu kullanmadım, ancak performans / bellek kullanımı / özelleştirmeler hakkında çok fazla şey söyleyemem, ancak github'daki beniokuya bakmak bana aynı zamanda bir izlenim veriyor kullanımı ve kurulumu nispeten kolaydır. Bu 3 kütüphaneden herhangi birini seçerken yanlış karar veremezsiniz, bu daha çok kişisel bir zevk meselesidir.Facebook SDK hala mavenCentral üzerinde resmi olarak yayınlanmadı gibi Eylül 2014'ten beri facebook sdk için kullanmadım ve ilk sürümü Ekim 2014'te mavenCentral'a çevrimiçi olarak koydukları anlaşılıyor. bu konuda iyi fikir.

  4. 3 büyük isim kütüphanesi arasında önemli bir fark olmadığını düşünüyorum. Göze çarpan tek kişi fresk ama farklı bir yaklaşıma sahip olması ve yeni olması ve savaş testinden geçmemesidir.


3
Küçük nit: Görünüşe göre Facebook SDK bir süredir Maven Central'da AAR olarak resmen kullanılabilir durumda. developers.facebook.com/docs/android/…
orip

1
Düzeltme için thx, ben facebook SDK kullandığımdan beri bir süredir bu yüzden kontrol etmedi. Yine de oraya yerleştirmek çok uzun sürdü.
Aegis

1
Bunu okuduktan bir yıl sonra hala Frescoe kullanmam gerekip gerekmediğini merak ediyorum ve hala neden yapmam gerektiğini göremiyorum. Glide ve Picasso kutunun dışında çalışırken, Frescoe sadece değecek ve boyutuna
benzemeyen


Ben de fresk ile bellek sorunları yaşadım, ne yazık ki animasyonlu gif desteğine ihtiyacınız varsa fresk veya kayma gibi görünüyor. Ayrıca FWIW , bazı ek karşılaştırma ayrıntılarına bir bağlantı .
Nick

63

Ne Glide ne de Picasso mükemmel değil. Glide'ın bir görüntüyü belleğe yükleme ve önbelleğe alma yöntemi, bir görüntünün çok daha hızlı yüklenmesine izin veren Picasso'dan daha iyidir. Ayrıca, bir uygulamanın popüler OutOfMemoryError'dan korunmasına da yardımcı olur. GIF Animation loading, Glide tarafından sağlanan bir öldürme özelliğidir. Her neyse, Picasso bir görüntüyü Glide'dan daha iyi kalitede çözer.

Hangisini tercih ederim? Picasso'yu bu kadar uzun bir süre kullanmama rağmen, şimdi Glide'ı tercih ettiğimi itiraf etmeliyim. Ancak Bitmap Biçimini ARGB_8888 olarak değiştirmenizi ve Glide'ın hem tam boyutlu görüntüyü önbelleğe almasını hem de önce birini yeniden boyutlandırmasını öneriyorum. Gerisi işini harika yapar!

  • Picasso ve Glide yöntem sayısı sırasıyla 840 ve 2678'dedir.
  • Picasso (v2.5.1) 'in boyutu 118KB, Glide (v3.5.2)' nin boyutu ise 430KB civarındadır.
  • Glide boyut başına önbelleğe alınmış görüntüler oluştururken Picasso tüm görüntüyü kaydeder ve işler, bu nedenle yüklendiğinde Glide ile daha hızlı gösterilir, ancak daha fazla bellek kullanır.
  • Glide, varsayılan olarak daha az bellek kullanır RGB_565.

+1 Picasso Palet Yardımcısı için .

Picasso vs Glide post hakkında çok konuşan bir yazı var


Mükemmel makale. Şimdi Glide'a geçiyorum. Picasso'dan bile daha iyisi aklımdakiler değil. :)
Sufian

1
Gördüğüm bir sorun Glide API 10 gerektiriyor. API 9 desteğini uygulamamdan bırakamadığım için biraz sorun var. Aksi takdirde kesinlikle daha iyi bir yol.
Sufian

Neden api 9 kullandığınızı açıklayabilir misiniz? sadece meraklı ...
Daniel Gomez Rico

Bir şey eksik olmadıkça, tüm Gingerbread sürümlerini desteklemek.
Sufian

1
Bence biraz öznel. Ancak mümkün olduğunca çok cihazı / sürümü desteklemek daha iyi bir şeydir. Hayır? :)
Sufian

18

Sizinle Picasso, Universal Image Loader ve Glide arasında yaptığım bir ölçütü paylaşmak istiyorum : https://bit.ly/1kQs3QN

Fresco karşılaştırmanın dışında kaldı çünkü testi yaptığım proje için mizanpajlarımızı yeniden düzenlemek istemedik (Drawee görünümü nedeniyle).

Özelleştirme, bellek tüketimi ve boyut ve yöntemler arasındaki denge nedeniyle Universal Image Loader'ı öneriyorum .

Eğer bir varsa küçük bir proje, ben Glide için giderdim (veya Fresco denemeye).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.