Dlaczego warto korzystać z biblioteki Android Picasso do pobierania obrazów?

Dlaczego mam pobierać obrazy z biblioteki Picassa, a nie używać tylko tego kodu:

private Bitmap DownloadImage(String URL) 
{
    Bitmap bitmap = null; 
    InputStream in = null; 

    try 
    {
        in = OpenHttpGETConnection(URL);
        bitmap = BitmapFactory.decodeStream(in); in.close();
    } 
    catch (Exception e) 
    {
        Log.d("DownloadImage", e.getLocalizedMessage());
    }

    return bitmap; 
}

Inne pytanie:

Czy Picasso pobiera obraz w interfejsie użytkownika lub przez wątek w tle?

Author: Code Maverick, 2014-03-11

9 answers

Dla przypomnienia dla każdego, kto jest nowy w Androidzie lub może przenosi się na Androida z iOS ..........

Dopóki coś drastycznie się nie zmieni, absolutnie musisz używać Picassa. To nie żart. Szczerze mówiąc, to takie proste. Zalety są niewiarygodne.

Jest to łatwe w użyciu:

Picasso.
  with(State.mainContext).
  load(parseImageFile.getUrl()).
  into(null);

You very simply:

Musi wykonywać buforowanie i wątki z obsługą obrazów na Androidzie.

To takie proste. Chyba, że chcesz napisać, że z scratch , wystarczy użyć Picassa.

Zauważ, że ParseImageFile zasadniczo nie działa - jest zupełnie bezużyteczny w buforowaniu i tak dalej. Istnieją godne podziwu alternatywy dla Picassa (takie jak Universal Image Loader, check it out), ale żadna nie działa tak dobrze jak Picasso, na razie 2014.

Uwaga jeśli przejdziesz do super-zaawansowanych-rzeczy... jedyną rzeczą lepszą od Picassa, jest przejście do Volley. ale to ogromny skok.

Zauważ, że Przewijanie ListView na Androidzie jest znacznie bardziej problematyczne niż przewijanie tabeli na iOS. Można powiedzieć, że Android + Picasso jest bardziej podobny do sytuacji na iOS, gdzie cała praca jest już wykonana do przewijania dużych widoków tabeli z obrazami.

Na dzień dzisiejszy Picasso jest - po prostu-centralną częścią każdej aplikacji na Androida. Dzięki Bogu, to jedna linijka kodu - bez konfiguracji, nic. / Align = "center" bgcolor = "# e0ffe0 " / Papież / / align = center /

BTW oto doskonały długi artykuł na temat Volley V. Picasso, jeśli potrzebujesz tego...

Http://www.bignerdranch.com/blog/solving-the-android-image-loading-problem-volley-vs-picasso/

 99
Author: Fattie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-24 12:01:32

Picasso Pobierz obrazek w innym wątku i ci się uda:

  • symbol zastępczy w międzyczasie obraz wciąż się pobiera
  • zmiana rozmiaru
  • kadrowanie/centrowanie / skalowanie
  • buforowanie (nie musisz pobierać obrazu za każdym razem)
  • to nawet robi "obraz fade in", który jest popularny / normalny teraz
To bardzo proste, oto przykład:
    Picasso.with(context)
           .load(url)
           .placeholder(R.drawable.placeholder)
           .resize(imgWidth, imgHeight)
           .centerCrop()
           .into(image);
 35
Author: Sarpe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-23 11:06:37

Zawsze używałem Picasso Library do zdjęć.
jest bardzo przydatny do zarządzania obrazami i nie martw się o problem z pamięcią.
Gdy pobieram obrazy z serwera lub json, użyłem

 Picasso.with(context).load("image url").fetch();

I przechowuję ten adres URL obrazu w bazie danych lub gdzieś.
Teraz możemy użyć tego obrazu w dowolnym miejscu (również offline).

Picasso.with(context).load("image url").into(ImageView);
 12
Author: Kglay Kophyo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-22 20:34:26
Picasso.with(this).load("http://webneel.com/wallpaper/sites/default/files/images/04-2013/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView,
  new Callback() {@
    Override
    public void onSuccess() {}@
    Override
    public void onError() {}
  });

Należy pobrać obrazy z biblioteki Picassa z następujących powodów:

  1. możesz umieścić element zastępczy, jeśli załadowanie obrazu zajmie trochę czasu.
  2. fit() - czasami niektóre obrazy nie ładują się w imageview ze względu na rozmiar. Ta metoda pomoże Ci załadować duże obrazy.
  3. onSuccess() - można wykonać pewne działanie, gdy obraz ładuje się pomyślnie.
  4. onError() - możesz wykonać jakąś akcję, gdy wystąpi problem z załadowaniem obraz.
 5
Author: Rajat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-29 06:10:36

Powinieneś użyć biblioteki image loader, takiej jak Picasso, Volley lub Universal Image Loader, ponieważ robią one następujące rzeczy, których Twój kod nie robi:

  • wydajna sieć wielowątkowa (oczywiście na wątkach tła)
  • łączenie wielu identycznych żądań w jedno wywołanie sieciowe
  • anulowanie oczekujących żądań, szczególnie podczas recyklingu elementów ListView
  • buforowanie dysku i pamięci z różnymi zasadami wygaśnięcia
  • zdjęcia w dół docelowy rozmiar widoku w celu poprawy wydajności i zmniejszenia zużycia pamięci
  • aktualizacje interfejsu użytkownika w celu poprawy responsywności interfejsu (przynajmniej dla Volley i Picasso).

Przy okazji, nigdy nie wolno wykonywać żądań sieciowych w wątku UI, a ponieważ HoneyComb, Android ci na to nie pozwala.

 2
Author: BladeCoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 00:37:25

Wiem, że Picasso jest niesamowitą biblioteką do zarządzania obrazami w ListView i GridView, ale wśród wszystkich opcji, w tym Picassa, używam GLIDE...

To naprawdę doskonale zarządza pobieraniem i buforowaniem...(nie mogłem zmusić Picassa do korzystania z buforowanych obrazów po zakończeniu pobierania, ale Glide zrobił to jak bułka z masłem).

Strona Github GLIDE:

Https://github.com/bumptech/glide

Pozdrawiam....

 2
Author: Arash Parsayar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-24 10:56:38

Jeśli użyjesz metody core do wczytywania obrazu z sieci, to będzie to wymagało większej ilości kodu. Ale jeśli użyjemy trzeciej biblioteki, takiej jak picasso, to osiągniemy nasz cel w kilku linijkach kodu.
A Biblioteka Picassa jest najlepsza i najprostsza jaką do tej pory znalazłem. Aby załadować obraz z Internetu za pomocą Picassa, musimy tylko napisać poniższy tekst.

Picasso.with(this)
.load("YOUR IMAGE URL HERE")
.placeholder(Your Drawable Resource) //this is optional the image to display while the url image is downloading
.error(Your Drawable Resource)         //this is also optional if some error has occurred in downloading the image this image would be displayed
.into(imageView);

Ale jeśli nie będziemy używać picasso library lub innej biblioteki, możemy potrzebować zrobić to za pomocą AsyncTask, który będzie wymagał więcej linii kodu.

Źródło: Picasso Android Tutorial

 2
Author: Amrah Anam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-14 07:33:06

Proszę dodać następującą zależność w swoim build.gradle(Module:app)

compile 'com.github.bumptech.glide:glide:3.6.1'
 0
Author: nikhil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-16 11:38:02

Picasso automatycznie obsługuje wszystkie pułapki związane z pobieraniem obrazów, takie jak buforowanie pobranego obrazu, wyszukiwanie pamięci podręcznej, anulowanie istniejącego żądania, wykonywanie transormacji i dekodowania obrazu, zmiana rozmiaru i kadrowanie obrazów.

I pozwala dostosować go, można skonfigurować pamięć do pamięci podręcznej, dodać transformator żądania używany do dodawania globalnych informacji do każdego żądania, dodać bitmapę config do obsługi dekodowania obrazów dla formatu nie objętego domyślną bitmapą config.

Pozwala na określenie zasad pamięci i zasad sieciowych, które sprawiają, że może używać pamięci podręcznej lub pobierać z sieci. Pozwala na dodanie obrazów zastępczych i błędów, które mają być używane podczas pobierania i w przypadku błędu podczas pobierania.

Picasso pobiera obrazy asynchronicznie na wątkach roboczych.

Oto kod wykorzystujący najnowszą wersję 2.71828 Picassa do załadowania obrazu do ImageView w wątku roboczym.

Picasso.get().load(productImageUrl).into(imageView);

Poniżej zmienia rozmiar kodu i crops image.

Zobacz http://www.zoftino.com/android-picasso-image-downloading-and-caching-library-tutorial dla informacji. Picasso.get().load (productImageUrl).zmiana rozmiaru (400,400).centerCrop ().into (imageView);

 0
Author: Arnav Rao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-12 04:36:57