Verifique se você está na versão mais recente
implementation 'com.github.bumptech.glide:glide:4.10.0'
Kotlin:
Glide.with(this)
.asBitmap()
.load(imagePath)
.into(object : CustomTarget<Bitmap>(){
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
imageView.setImageBitmap(resource)
}
override fun onLoadCleared(placeholder: Drawable?) {
// this is called when imageView is cleared on lifecycle call or for
// some other reason.
// if you are referencing the bitmap somewhere else too other than this imageView
// clear it here as you can no longer have the bitmap
}
})
Tamanho do bitmap:
se você quiser usar o tamanho original da imagem, use o construtor padrão como acima, caso contrário, você pode passar o tamanho desejado para o bitmap
into(object : CustomTarget<Bitmap>(1980, 1080)
Java:
Glide.with(this)
.asBitmap()
.load(path)
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
Resposta antiga:
Com compile 'com.github.bumptech.glide:glide:4.8.0'
e abaixo
Glide.with(this)
.asBitmap()
.load(path)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
}
});
Para compile 'com.github.bumptech.glide:glide:3.7.0'
e abaixo
Glide.with(this)
.load(path)
.asBitmap()
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageView.setImageBitmap(resource);
}
});
Agora você pode ver um aviso SimpleTarget is deprecated
Razão:
O ponto principal de descontinuar o SimpleTarget é alertá-lo sobre as maneiras pelas quais ele tenta quebrar o contrato de API do Glide. Especificamente, ele não faz nada para forçá-lo a parar de usar qualquer recurso carregado após a limpeza do SimpleTarget, o que pode levar a falhas e corrupção gráfica.
A imagem SimpleTarget
estática pode ser usada desde que você tenha certeza de que não está usando o bitmap após a limpeza do imageView.
4.9.0
.asBitmap()
deve ser colocado depoiswith(this)
se não for resolvido.Não estou familiarizado o suficiente com o Glide, mas parece que se você souber o tamanho do destino, poderá usar algo como isto:
Parece que você pode passar
-1,-1
e obter uma imagem em tamanho real (puramente baseada em testes, não pode vê-la documentada).A nota
into(int,int)
retorna aFutureTarget<Bitmap>
, então você deve agrupar isso em um bloco try-catch cobrindoExecutionException
eInterruptedException
. Aqui está um exemplo de implementação mais completo, testado e funcionando:Seguindo a sugestão de Monkeyless no comentário abaixo (e essa também parece ser a maneira oficial ), você pode usar um
SimpleTarget
, opcionalmente associado a,override(int,int)
para simplificar consideravelmente o código. No entanto, nesse caso, o tamanho exato deve ser fornecido (nada abaixo de 1 não é aceito):como sugerido por @hennry, se você precisou da mesma imagem, use
new SimpleTarget<Bitmap>()
fonte
Target.SIZE_ORIGINAL
para a largura e altura do bitmap em vez de -1SimpleTarget
seguinte:new SimpleTarget<Bitmap>(){....}
Parece que substituir a
Target
classe ou uma das implementaçõesBitmapImageViewTarget
e substituir osetResource
método para capturar o bitmap pode ser o caminho a seguir ...Isso não foi testado. :-)
fonte
ATUALIZAR
Agora precisamos usar
Custom Targets
CÓDIGO DE AMOSTRA
A resposta acima de tudo está correta, mas desatualizada
porque na nova versão do Glide
implementation 'com.github.bumptech.glide:glide:4.8.0'
Você encontrará abaixo o erro no código
.asBitmap()
não está disponível emglide:4.8.0
está obsoletoSimpleTarget<Bitmap>
Aqui está a solução
fonte
Isto é o que funcionou para mim: https://github.com/bumptech/glide/wiki/Custom-targets#overriding-default-behavior
fonte
Se você deseja atribuir uma imagem dinâmica de bitmap a variáveis de bitmap
Exemplo para
kotlin
As respostas acima não funcionaram para mim
.asBitmap
deve estar antes do.load("http://....")
fonte
ATUALIZAÇÃO PARA NOVA VERSÃO
RESPOSTA ANTIGA
A resposta do @ outlyer está correta, mas há algumas alterações na nova versão Glide
Minha versão: 4.7.1
Código:
Nota: esse código é executado no UI Thread, portanto, você pode usar AsyncTask, Executor ou algo mais para simultaneidade (como o código do @ outlyer). Se quiser obter o tamanho original, coloque Target.SIZE_ORIGINA como meu código. Não use -1, -1
fonte
Versão mais recente:
fonte