Erhalten Sie "Bitmap" aus Bildansicht geladen mit Picasso

Hatte ich eine Methode, die Belastungen Bilder, wenn das Bild noch nicht geladen wurde, bevor es auf einem server. Dann speichert er es in die apps-Datei-system. Wenn es in der Datei system lädt, das Bild stattdessen als, die ist viel schneller als das abrufen der Bilder vom server. Wenn Sie geladen haben das Bild vor ohne die app zu schließen, es wird gespeichert werden, in einem statischen Wörterbuch, so dass er erneut geladen werden können, ohne mehr Speicher zu vermeiden, out-of-memory-Fehler.

Dies alles funktionierte gut, bis ich begann mit der Picasso-laden der Bilder-Bibliothek. Jetzt bin ich das laden von Bildern in einer Bildansicht, aber ich weiß nicht, wie man die Bitmap zurückgegeben wird, so dass ich speichern Sie es in eine Datei oder das statische Wörterbuch. Dieser hat die Dinge schwieriger. weil es bedeutet, dass es versucht zu laden das Bild vom server jedes mal, das ist etwas, was ich nicht wollen, zu geschehen. Gibt es eine Möglichkeit, ich kann das Bitmap nach dem einsetzen in die Bildansicht? Unten ist mein code:

public Drawable loadImageFromWebOperations(String url,
        final String imagePath, ImageView theView, Picasso picasso) {
    try {
        if (Global.couponBitmaps.get(imagePath) != null) {
            scaledHeight = Global.couponBitmaps.get(imagePath).getHeight();
            return new BitmapDrawable(getResources(),
                    Global.couponBitmaps.get(imagePath));
        }
        File f = new File(getBaseContext().getFilesDir().getPath()
                .toString()
                + "/" + imagePath + ".png");

        if (f.exists()) {
            picasso.load(f).into(theView);
            **This line below was my attempt at retrieving the bitmap however 
            it threw a null pointer exception, I assume this is because it 
            takes a while for Picasso to add the image to the ImageView** 
            Bitmap bitmap = ((BitmapDrawable)theView.getDrawable()).getBitmap();
            Global.couponBitmaps.put(imagePath, bitmap);
            return null;
        } else {
            picasso.load(url).into(theView);
            return null;
        }
    } catch (OutOfMemoryError e) {
        Log.d("Error", "Out of Memory Exception");
        e.printStackTrace();
        return getResources().getDrawable(R.drawable.default1);
    } catch (NullPointerException e) {
        Log.d("Error", "Null Pointer Exception");
        e.printStackTrace();
        return getResources().getDrawable(R.drawable.default1);
    }
}

Jede Hilfe wäre sehr geschätzt, danke!

Picasso nicht geladen werden die Bilder vom Server zu jeder Zeit. Nur auf die erste Zeit, dann lädt es aus dem cache-Verzeichnis.

InformationsquelleAutor shadowarcher | 2014-07-10

Schreibe einen Kommentar