2014-04-30 18 views
8

Sto utilizzando la libreria Picasso per caricare le immagini in un viewpager, ma ho bisogno di caricare una bitmap e Picasso accetta solo la variabile File. Come posso caricare un file bitmap usando Picasso?Carica bitmap con Picasso

Bitmap imagescompress = decodeSampledBitmapFromResource(getResources(), AnohanaAdapter.imagep[position], 100, 100); 

Se metto imagecompress nella funzione del carico di Picasso, ho questo errore: non può risolvere il metodo 'di carico (android.graphics.Bitmap)'.

In realtà per le immagini di carico io uso il codice qui sotto:

Picasso.with(VistaSingola.this).load(AnohanaAdapter.imagep[i]).placeholder(R.drawable.ic_launcher).error(R.drawable.error).fit().into(imageViewTouch); 

Ma le immagini sono grandi e io non voglio andare in OutOfMemory. Qualcuno può aiutarmi? Per favore.

Grazie a tutti mi aiuti

+0

L'immagine è troppo grande per processo, che richiede troppa memoria. Prova a usare 'ridimensiona (x, y)' e vedi cosa succede. – shkschneider

+0

Prima di tutto grazie per la risposta, ho provato a ridimensionare (x, y), ma come ho scritto in questo post http://stackoverflow.com/questions/23371597/resize-an-image-in-viewpager-only- se-è-visibile, quel codice che si trova in un "ciclo for" richiede molto tempo all'app, volevo sapere se c'è un modo per convertire la variabile Bitmap in una variabile accettata dalla libreria Picasso. – Matteo

+0

La conversione di bitmap in file richiederebbe molto (molto) tempo in più. Non sono a conoscenza di un modo per accelerare ciò che si vuole fare (mi dispiace). L'unica soluzione mi sembra di ridurre il lavoro che stai facendo, perché l'elaborazione delle immagini richiederà sempre tempo se ne hai molte. Quanto BTW? – shkschneider

risposta

1

È possibile utilizzare il codice seguente per fare questo

private Target target = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
     //TODO: Store bitmap in global vaiable 
     } 
     @Override 
     public void onBitmapFailed() { 
     } 
} 

private void loadBitmap(String url) { 
    Picasso.with(this).load(url).into(target); 
} 

@Override 
public void onDestroy() { // could be in onPause or onStop 
    Picasso.with(this).cancelRequest(target); 
    super.onDestroy(); 
} 
Problemi correlati