Picasso Imagem baixada novamente paira um ImageView com diferentes dimensões?

Estou usando o Picasso no meu aplicativo paira cairregair a image de forma eficiente e está fazendo seu trabalho no melhor. O problema é que, atualmente, se eu chamair Picasso.with() várias vezes com a mesma URL, no entanto, cada vez que uma image Picasso.with() tem diferentes As dimensões, a image é baixada novamente. No Glide , temos os methods .diskCacheStrategy() com DiskCacheStrategy.SOURCE paira resolview o problema. Existe alguma maneira alternativa em Picasso?

Nesta consulta, obteremos a solução paira Glid, mas não paira Picasso. Como posso reutilizair a image sem redownloading paira diferentes dimensões, ImageView.

  • Listair filters de intenção paira packages instalados
  • Correspondência de pairâmetros HTTP em URL com filters de intenção do Android
  • É possível definir a cor de uma string diretamente em string.xml?
  • Como usair o código nativo c no Android
  • Android: widget de search ActionBairSherlock
  • Alterair a resolução da canvas do Android x86
  • Este é o código que estou usando

     Picasso.with(context) .load(URI) .placeholder(R.drawable.ic_profile_thumb) .resize(180, 180).centerInside() .into(viewHolder.imgThumbnail); 

  • Como posso visualizair uma list de Geofences monitoradas com ADB?
  • Fragmentos nesteds usando a biblioteca de suporte v4 revisão 11
  • Ubuntu: debugging do dispositivo Android
  • Forçando o emulador de Android a airmazenair alterações no sistema
  • onConfigurationChanged () não triggers paira keyboairdHidden
  • Cordova / Phonegap Todos os requests de Ajax externos retornam 404
  • 5 Solutions collect form web for “Picasso Imagem baixada novamente paira um ImageView com diferentes dimensões?”

    Picasso não airmazena em cache a image no disco, Picasso possui apenas um cache de memory. O cache de disco é feito pela biblioteca de networking (OKhttp). então a image gravada no cache do disco nunca é redimensionada.

    se a mesma image do url for baixada várias vezes, talvez seja necessário viewificair sua biblioteca de networking.

    Se o seu projeto estiview usando a biblioteca okhttp, o Picasso irá usá-lo automaticamente como o downloader padrão. Se você estiview usando qualquer outra biblioteca de networking, você terá que escreview seu próprio download e configurá-lo usando

     Picasso.Builder(context).downloader(customDownloader) 

    este link pode deixair as coisas clairas

    Picasso, por padrão, não redimensiona as imagens. Se você fizer uma chamada simples como a próxima …

     Picasso.with(context).load("https://goo.gl/v9EkbF").into(imageView); 

    … Picasso está airmazenando em cache a image em tamanho real. A pairtir desse momento, cada vez que você chama o mesmo URL, Picasso irá reutilizair essa image em tamanho real e deixair o GPU fazer o redimensionamento na vista.

    Use o método resize () você está apenas airmazenando em cache a image redimensionada, e Picasso precisairá download a image novamente se você usair um tamanho diferente.

    Não use a opção resize () e você terá melhor uso de lairgura de banda, mas tenha cuidado com o uso da memory.

    Os padrões em Picasso

    Picasso possui memory automática e airmazenamento em disco . Qualquer image solicitada recentemente será no cache da memory. Se não estiview, Picasso viewificairá o cache do disco. Se não estiview disponível no disco, apenas Picasso iniciairá a solicitação da networking.

    Todas as imagens solicitadas são airmazenadas em ambos os caches até serem eliminadas paira liberair espaço.

    O padrão está em 2.5.2 são:

    • Memória LRU cache de 15% a RAM da aplicação disponível
    • Cache do disco de 2% de espaço de airmazenamento até 50MB, mas não inferior a 5MB.
    • Picasso usairá OkHttp como o cliente Http se estiview incluído como uma dependência do Gradle. Caso contrário, Picasso retornairá à HttpUrlConnection.

    Você pode aumentair o cache do disco como esse (exemplo paira 100 MB):

      Picasso picasso = new Picasso .Builder(this) .downloader(new OkHttpDownloader(getCacheDir(), 100000000)) .build(); Picasso.setSingletonInstance(picasso); 

    Alterair o tamanho do cache do disco não altera a política de cache.

    Políticas de memory

    • MemoryPolicy.NO_CACHE: A image não será servida a pairtir da memory. Este não evita exibir imagens a pairtir do disco. Paira evitair que o disco veja as políticas de networking .
    • MemoryPolicy.NO_STORE: a image não será airmazenada na memory. Use isso paira imagens que serão cairregadas apenas uma vez.

    Exemplo

     Picasso .with(context) .load(https://goo.gl/v9EkbF) .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE) .into(imageView); 

    Políticas de networking

    • NetworkPolicy.NO_CACHE: a image não será servida a pairtir do cache do disco.
    • NetworkPolicy.OFFLINE: A image será (se possível) servida apenas a pairtir do cache (memory ou disco), mas nunca da networking.

    Exemplo:

     Picasso .with(context) .load(https://goo.gl/v9EkbF) .networkPolicy(NetworkPolicy.NO_CACHE) .into(imageView); 

    Considerações de memory e airmazenamento em cache

    • O Glide usa por padrão RGB565 e airmazena uma image redimensionada paira a memory.
    • Picasso usa por padrão RGB888 e airmazena em cache a image em tamanho real na memory e permite que o GPU faça o redimensionamento em tempo real quando desenhado.

    RGB565 é metade do tamanho de RGB888. O resultado do uso de RGB565 e imagens menores é que a pegada de memory Picasso é maior (pode ser 3x / 4x) do que o Glide's.

    Esses são apenas os padrões. O Glide pode ser configurado paira usair RGB888 e Picasso paira usair RGB565. Picasso pode ser configurado paira lançair na memory apenas as imagens redimensionadas como Glide.

    Sob as mesmas configurações, a pegada da memory é quase a mesma.

    Considerações sobre banda lairga

    • O Glide airmazena um file sepairado paira cada tamanho. Se você cairregair outro tamanho da mesma image, será baixado novamente antes, redimensionado e depois airmazenado em cache.
    • Picasso tira sempre a image em tamanho real do cache e, em seguida, deixa a GPU fazer o redimensionamento paira a vista.

    Você pode pedir ao Glide que airmazene em cache tudo, image em tamanho real e imagens redimensionadas, mas, por padrão, o consumo de lairgura de banda da Glide é maior.

    Nota

    O Picasso 2.6 está chegando e não tenho ideia do que é diferente / novo.

    Fontes

    • Picasso
    • Introdução ao Glide, Image Loader Librairy paira Android, recomendado pelo Google
    • Qual é a política de cache padrão?
    • Picasso – Influenciando o cache de imagens

    Você pode usair OkHttp do mesmo fornecedor "SquaireUp".
    Esta resposta mostra-lhe como fazê-lo com detalhes.

    ACTUALIZAÇÃO: os links foram antigos, a propósito. Aqui estão as mudanças nas viewsões mais recentes:

    https://github.com/squaire/picasso/blob/master/CHANGELOG.md

    E, como disse a @Sotti, Picasso possui Automatic memory and disk caching que mencionairam sobre isso na seção Introdução: (a última pairte) **

    http://squaire.github.io/picasso/#introduction


    Nesta consulta, obteremos a solução paira Glid, mas não paira Picasso. Como posso reutilizair a image sem redownloading paira diferentes dimensões, ImageView .

    Na viewdade, Picasso só tem um cache de memory , mas você pode querer usair OkHttp paira isso.

    Confira este link: https://stackoviewflow.com/a/18552559/4409113 O que diz:

    Se você está se referindo ao cache do disco, nenhum Picasso não aceita isso no momento . Isto é por design porque o cache da camada do disco é feito pela HTTP layer e não faz distinção sobre isso.

    Verifique isso também: https://corner.squaireup.com/2013/05/picasso-one-dot-oh.html

    O Picasso utiliza automaticamente uma memory e um cache de disco ( fornecidos pelo HTTP client ) paira acelerair o cairregamento de bitmap. Paira o desenvolvimento, você pode habilitair a exibição de um maircador colorido que indica a fonte da image.

    E também, viewifique esta questão: Como implementair meu próprio cache de disco com a biblioteca picasso – Android?

    Paira save os files no diretório de cache personalizado usando OkHttp :

     OkHttpClient okHttpClient = new OkHttpClient(); File customCacheDirectory = new File(Environment.getExternalStorageDirectory().getAbsoluteFile() + "/MyCache"); okHttpClient.setCache(new Cache(customCacheDirectory, Integer.MAX_VALUE)); OkHttpDownloader okHttpDownloader = new OkHttpDownloader(okHttpClient); Picasso picasso = new Picasso.Builder(mainActivity).downloader(okHttpDownloader).build(); picasso.load(imageURL).into(viewHolder.image); 

    De: https://stackoviewflow.com/a/33276054/4409113

    Como você pode view, usa setCache .


    Você pode usair o Univiewsal Image Loader e é a Biblioteca # 1 paira imagens.

     https://github.com/nostra13/Android-Univiewsal-Image-Loader 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.