Muszę zapisać zdjęcia pobrane z pamięci Firebase na telefon, aby nie pobierać ich ponownie za każdym razem, gdy program jest uruchamiany.

url = "https://firebasestorage.googleapis.com/v0/b/****-*************.jpg"
Picasso.get().load(url).into(imageView);

Nie mam problemu z przeglądaniem obrazu, ale po ponownym uruchomieniu programu nie chcę, aby obraz był ponownie ładowany. Jak mogę to osiągnąć?

0
Murat AKSU 20 listopad 2019, 22:40
Picasso nie pobiera obrazu raz za razem, po prostu pobiera raz (przy pierwszym wywołaniu adresu URL). Ładowanie w 2., 3., ... próbie to po prostu Picasso przeglądający twój obraz w swojej pamięci podręcznej. Sprawdź swój profiler pod kątem zużycia danych i wypróbuj go przy zamknięciu sieci.
 – 
L2_Paver
21 listopad 2019, 03:51

3 odpowiedzi

Najpierw będziesz chciał przekonwertować ImageView, w którym masz obraz, na bitmapę

BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = drawable.getBitmap();

Teraz możesz zapisać bitmapę

try (FileOutputStream out = new FileOutputStream(filename)) { //where filename is your path location file
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);     
} catch (IOException e) {
    e.printStackTrace();
}
0
Alejandro Campos Palacios 20 listopad 2019, 23:26
Myślę, że musi być lepszy sposób. Nie chcę czekać, aż obraz pojawi się w imageView.
 – 
Murat AKSU
21 listopad 2019, 00:09
Spójrz na tę odpowiedź, myślę, że to może rozwiązać Twój problem, po konwersji na bitmapę możesz to zapisać tak jak opisuję w odpowiedzi stackoverflow. com/a/33012557/12355947
 – 
Alejandro Campos Palacios
21 listopad 2019, 00:42
Lub zapisz go bezpośrednio jako byteArray.
 – 
Alejandro Campos Palacios
21 listopad 2019, 00:49

Lepiej używaj Glide 4 zamiast Picassa. Strategia buforowania obrazów Glide jest przydatna do tego rodzaju celów. Więcej szczegółów : https://bumptech.github.io/glide/doc/caching.html

1
sreedwish k jagan 21 listopad 2019, 08:17

Myślę, że musisz wykonać takie kroki, aby uzyskać dobre obrazy i przedstawić je w widoku obrazu.

1) Pobierz z firebase i zapisz w katalogu na Androidzie. 2) Wyświetl obraz z katalogu Androida.

Możesz też pobrać obraz, używając linku z Firebase. Nie jest dobrym pomysłem pobieranie obrazu z widoku obrazu.

0
KpStar 21 listopad 2019, 06:38