Picasso vs. Imageloader vs. Fresco vs Glide [fechado]


344

Constatações:

  1. Diferença entre o Picasso v / s ImageLoader aqui ...
  2. Informações sobre a biblioteca GLIDE aqui ...
  3. Agora, recentemente, o Facebook lançou uma nova biblioteca de imagens chamada Fresco

Questões:

  1. Qual é a diferença entre o Picasso v / s Imageloader v / s Fresco
  2. Quando podemos usar o Glide
  3. Qual é a melhor biblioteca para usar.
  4. Se cada biblioteca tem seu próprio significado, quais são elas?

Também estou interessado em afresco. alguém pode explicar a diferença?
Krit


8
Este não é o lugar para fazer perguntas com base de opinião
danny117

16
@ danny117 então o que podemos fazer aqui se não tivermos nenhuma idéia sobre isso?
Anand Savjani

2
@ShobhitPuri esta ferramenta vai ajudar a verificar a contagem método
Nicholas Ng

Respostas:


189

Eu sou um dos engenheiros do projeto Fresco. Então, obviamente, sou tendenciosa.

Mas você não precisa aceitar minha palavra. Lançamos um aplicativo de exemplo que permite comparar o desempenho de cinco bibliotecas - Fresco, Picasso, UIL, Glide e Volley Image Loader - lado a lado. Você pode obtê-lo em nosso repositório do GitHub .

Devo também salientar que o Fresco está disponível no Maven Central, como com.facebook.fresco:fresco.

O Fresco oferece recursos que Picasso, UIL e Glide ainda não possuem:

  1. As imagens não são armazenadas no heap Java, mas no heap ashmem. Buffers de bytes intermediários também são armazenados no heap nativo. Isso deixa muito mais memória disponível para os aplicativos usarem. Reduz o risco de OutOfMemoryErrors. Também reduz a quantidade de aplicativos de coleta de lixo, o que resulta em melhor desempenho.
  2. Imagens JPEG progressivas podem ser transmitidas, como em um navegador da web.
  3. As imagens podem ser cortadas em qualquer ponto, não apenas no centro.
  4. As imagens JPEG podem ser redimensionadas nativamente. Isso evita o problema de OOM ao tentar reduzir o tamanho de uma imagem.

Existem muitos outros ( consulte nossa documentação ), mas estes são os mais importantes.


11
Obrigado, você pode anexar o resultado de "Lançamos um aplicativo de exemplo que permite comparar o desempenho de cinco bibliotecas" em um formato tabular à sua resposta?
mmlooloo

11
Fresco tem mais alguns recursos do que os outros, mas também é muito maior ..
ligi

4
eles adicionaram um 's' na parte de trás do link. github.com/facebook/fresco/tree/master/samples
JR Tan

@tyronen estou interessado em afresco. Permite carregar imagens locais em vez da rede? Graças
GmloMalo

11
@ wedi sim, é.
tyronen

131

Lembre-se de que esta é uma pergunta altamente baseada em opiniões, então parei de fazer fiordes e fiz uma mesa rápida

insira a descrição da imagem aqui

Agora, a comparação de bibliotecas é difícil porque, em muitos parâmetros, os quatro praticamente fazem a mesma coisa, exceto possivelmente o Fresco, porque há um monte de novas otimizações de nível de memória nele. veja uma comparação para com base na minha experiência.

Tendo usado o Fresco o mínimo, a resposta pode evoluir à medida que continuo a usá-la e compreendê-la para as explorações atuais. O used personallyestá usando a biblioteca pelo menos uma vez em um aplicativo concluído.

* Nota - o Fresco agora suporta GIF, bem como animações WebP


11
Estou curioso sobre as classificações mais baixas de 'Personalização', 'Uso da imagem de rede' e 'Facilidade de uso' do Fresco. Qual é a base dessas classificações?
Tyronen 29/05

11
Primeiro uso, principalmente, estará usando Fresco um pouco mais para entender, esta resposta pode evoluir :)
Vrashabh Irde

11
@Slartibartfast Você teve a chance de experimentar o Fresco e a versão mais recente do Glide 3.0? Você ainda os classificaria da mesma forma?
Shobhit Puri

2
Você perdeu um aspecto importante. ... o tamanho da biblioteca. Esse é o principal motivo pelo qual o Picasso e o UImageLoader não são compatíveis com GIF. Também seria bom incluir licenças.
Codeversed

3
@AhamadullahSaikat Os que ele usou pessoalmente.
1616 Pierre

112

Fontes de afresco | fora do site
(-)
- Tamanho enorme da biblioteca
- Sem retorno de
chamada com os parâmetros de bitmap - O SimpleDraweeView não suporta wrap_content
- Tamanho enorme do cache
(+)
- Carregador de imagens bastante rápido (para imagens pequenas e médias)
- Muita funcionalidade (streaming, ferramentas de desenho, gerenciamento de memória, etc.)
- Possibilidade de configurar diretamente em xml (por exemplo, cantos arredondados)
- Suporte GIF
- Suporte WebP e Animated Webp


Fontes de Picasso | fora do local
(-)
- Carregamento lento de imagens grandes da Internet no ListView
(+)
- Tamanho
minúsculo da biblioteca - Tamanho pequeno do cache
- Uso simples
- A interface do usuário não é congelada
- Suporte à WebP


Glide sources

(-)
- Tamanho grande da biblioteca
(+)
- Tamanho minúsculo do cache
- Simples de usar
- Suporte GIF
- Suporte WebP
- Carregamento rápido de imagens grandes da Internet no ListView
- A interface do usuário não é congelada
- BitmapPool para reutilizar a memória e portanto, eventos menores de GC


Universal imagem Carregador fontes de

(-)
- funcionalidade limitada (processamento de imagem limitada)
- O apoio do projeto parou desde 2015/11/27
(+)
- tamanho Tinny da biblioteca
- Simples em uso


Testado por mim no SGS2 (Android 4.1) (WiFi 8.43 Mbps)
Versões oficiais para Java, não para Xamarin!
19 de outubro de 2015

Eu prefiro usar Glide.
Leia mais aqui .
Como gravar cache no armazenamento externo (cartão SD) com o Glide.


4
O "carregador de imagens bastante rápido" parece contradizer o "congelamento de aplicativos" no Fresco.
TWIStErRob 23/05

2
Eu tenho o Picasso em um projeto Xamarin e o uso de memória foi ENORME (usado para carregar imagens na exibição do reciclador). OutOfMemoryo tempo todo ...
Vahid Amiri

@ VSG24 existem 2 opções: 1) você está usando errado. 2) Android versão (java) da lib não é o mesmo para Xamarain
Volodymyr Kulyk

11
Como negativo Glide (-), experimentei muitas oscilações. As imagens carregadas seriam "redefinidas" do nada
FRR

11
@RJFares Tentei a versão mais recente recentemente, você pode ImagePipelineConfig.setDownsampleEnabled(true)evitar o congelamento. Mas às vezes pula quadros de um GIF. Se você exibir apenas imagens estáticas no seu aplicativo, acho que você pode experimentá-lo.
Kimi Chiu

109

Essas respostas são totalmente minha opinião

Respostas

  1. O Picasso é um carregador de imagens fácil de usar, o mesmo vale para o Imageloader. O Fresco usa uma abordagem diferente para o carregamento de imagens, ainda não o usei, mas também me parece mais uma solução para obter imagens da rede e armazená-las em cache, mostrando as imagens. então, o contrário, como Picasso / Imageloader / Glide, que para mim são mais mostrando imagem na tela que também obtém imagens da rede e as armazena em cache.

  2. O Glide tenta ser um pouco intercambiável com o Picasso. Acho que, quando eles foram criados, a mentalidade de Picasso era seguir as especificações HTTP e permitir que o servidor decidisse as políticas de cache, o cache de tamanho completo e o redimensionamento sob demanda. O glide é o mesmo em seguir a especificação HTTP, mas tenta ter uma área de memória menor, fazendo algumas suposições diferentes, como armazenar em cache as imagens redimensionadas em vez das imagens em tamanho normal e mostrar imagens com RGB_565 em vez de RGB_8888. Ambas as bibliotecas oferecem personalização completa das configurações padrão.

  3. Quanto a qual biblioteca é a melhor para usar, é realmente difícil dizer. Picasso, Glide e Imageloader são bibliotecas bem respeitadas e testadas, fáceis de usar com as configurações padrão. Picasso e Glide exigem apenas 1 linha de código para carregar uma imagem e ter um espaço reservado e uma imagem de erro. Personalizar o comportamento também não exige muito trabalho. O mesmo vale para o Imageloader, que também é uma biblioteca mais antiga do que Picasso e Glide, no entanto, eu não o usei, então não posso dizer muito sobre desempenho / uso de memória / personalizações, mas olhar para o leia-me no github me dá a impressão de que também é. relativamente fácil de usar e configurar. Portanto, ao escolher qualquer uma dessas 3 bibliotecas, você não pode tomar a decisão errada, é mais uma questão de gosto pessoal.Como o SDK do facebook ainda não foi lançado oficialmente no mavenCentral , não uso o facebook sdk desde setembro de 2014 e parece que eles colocaram a primeira versão online no mavenCentral em outubro de 2014. Portanto, levará algum tempo até que possamos obter boa opinião sobre isso.

  4. entre as três grandes bibliotecas de nomes, acho que não há diferenças significativas. O único que se destaca é o afresco, mas é porque tem uma abordagem diferente e é novo e não é testado em batalha.


3
Menor detalhe: parece que o SDK do Facebook está oficialmente disponível como um AAR no Maven Central há algum tempo. developers.facebook.com/docs/android/…
orip

11
thx para a correção, já faz um tempo desde que eu usei o SDK do facebook, então eu não tinha verificado isso. Mesmo assim, demoraram muito para serem colocados lá.
Aegis

11
Um ano depois de ler isso, ainda me pergunto se devo usar o Frescoe e ainda não consigo entender por que deveria. Enquanto Glide e Picasso trabalho fora da caixa, Frescoe apenas precisa de você para fazer muitas coisas que não parecem vale a pena eo tamanho ....
frostymarvelous

Quero salientar que fresco tem memória-temas: github.com/facebook/react-native/issues/8711
Fabian Zeindl

Eu também experimentei os problemas de memória com afrescos, infelizmente, parece que deve ser afrescado ou deslizar se você precisar de suporte de gif animado. Além disso, o FWIW apresenta um link para alguns detalhes adicionais de comparação.
7777 Nick

63

Nem Glide nem Picasso são perfeitos. A maneira como o Glide carrega uma imagem na memória e faz o cache é melhor que o Picasso, que permite que uma imagem seja carregada muito mais rapidamente. Além disso, também ajuda a impedir que um aplicativo saia do popular OutOfMemoryError. O carregamento da animação GIF é um recurso matador fornecido pelo Glide. De qualquer forma, Picasso decodifica uma imagem com melhor qualidade que o Glide.

Qual eu prefiro? Embora eu use o Picasso por muito tempo, devo admitir que agora prefiro o Glide. Mas eu recomendo que você altere o Formato Bitmap para ARGB_8888 e permita que o Glide armazene em cache a imagem em tamanho normal e a redimensione primeiro. O resto seria ótimo para o seu trabalho!

  • A contagem de métodos de Picasso e Glide está em 840 e 2678, respectivamente.
  • O tamanho de Picasso (v2.5.1) é de cerca de 118 KB, enquanto o Glide (v3.5.2) é de cerca de 430 KB.
  • O Glide cria imagens armazenadas em cache por tamanho, enquanto o Picasso salva a imagem completa e a processa. Assim, no carregamento, ela é exibida mais rapidamente com o Glide, mas usa mais memória.
  • O Glide usa menos memória por padrão com RGB_565.

+1 Para o Assistente de paleta do Picasso .

Há um post que fala muito sobre o post de Picasso vs Glide


Excelente artigo. Estou mudando para o Glide agora. Ainda melhor que Picasso não é o que eu tinha em mente. :)
Sufian

11
Um problema que vejo é que o Glide requer a API 10. É um pouco problemático, pois não consigo descartar o suporte à API 9 do meu aplicativo. Caso contrário, certamente é o melhor caminho a percorrer.
Sufian

Você pode explicar por que você está usando a API 9? apenas curioso ...
Daniel Gomez Rico

A menos que esteja faltando alguma coisa, é para suportar todas as versões do Gingerbread.
Sufian

11
Eu acho que é um pouco subjetivo. Mas é melhor oferecer suporte ao maior número de dispositivos / versões possível. Não? :)
Sufian

18

Quero compartilhar com você uma referência que fiz entre Picasso, Universal Image Loader e Glide : https://bit.ly/1kQs3QN

Fresco estava fora da referência porque, para o projeto que eu estava executando o teste, não queríamos refatorar nossos layouts (por causa da visualização Drawee).

O que eu recomendo é o Universal Image Loader devido à sua personalização, consumo de memória e equilíbrio entre tamanho e métodos.

Se você tem um projeto pequeno, eu optaria pelo Glide (ou experimentaria o Fresco).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.