Picasso: co to je, načítání obrázků a práce v Android aplikacích

Autor: IT Sectr Publikováno: 2026-05-05 Doba čtení: 8 min

Picasso je knihovna pro načítání obrázků v Android aplikacích vyvinutá společností Square. Knihovna poskytuje jednoduché a výrazné API pro načítání, ukládání do cache a zobrazování grafiky ze sítě. Podle GitHub statistik Picasso byla knihovna stažena více než 100 000krát. Picasso automaticky spravuje paměť a ukládá obrázky do cache na několika úrovních.

Hlavní body

  • Picasso — knihovna pro načítání obrázků od Square s jednoduchým API pro Android
  • Cache na disku a v paměti zkracuje dobu načítání opakovaných obrázků
  • Transformace Crop, Resize a Rotate se aplikují na obrázky za běhu
  • Placeholder a chybové obrázky se zobrazují během načítání a při chybě
  • Priority načítání umožňují řídit pořadí zobrazení obrázků

Co je Picasso?

Picasso je knihovna pro asynchronní načítání obrázků v Androidu vytvořená společností Square. Název je odvozen od umělce Pabla Picassa a odráží filozofii knihovny: přeměnit složitý úkol na jednoduché a elegantní API. Je to nejpopulárnější knihovna pro načítání obrázků v komunitě Android.

Architektura Picasso je minimalistická: knihovna používá fond vláken pro načítání, LruCache pro cache v paměti a DiskLruCache pro cache na disku. Na rozdíl od Glide, Picasso nevyžaduje konfiguraci AppGlideModule a je připraven k použití ihned po přidání závislosti. To z něj činí ideální volbu pro prototypy a malé projekty.

Picasso 2.8 — poslední stabilní verze kompatibilní s Android API 21+ a Java 8+. Knihovna nevyžaduje konfiguraci Gradle pluginů nebo anotací, což zjednodušuje migraci mezi verzemi a snižuje riziko chyb při aktualizaci. Navzdory dlouhé historii zůstává Picasso žádaný v tisících projektů po celém světě.

Hlavním úkolem Picasso je načíst obrázek z URL, dekódovat jej, v případě potřeby změnit jeho velikost a zobrazit v ImageView. Knihovna automaticky spravuje vlákna na pozadí, cache a opětovné použití ImageView v seznamech.

Od vydání v roce 2013 se Picasso stal standardem pro načítání obrázků v komunitě Android. Knihovna se používá v tisících aplikací díky minimálnímu vstupnímu prahu — pro první použití stačí jeden řádek kódu.

Priority a rušení požadavků

Priority v Picasso umožňují řídit pořadí načítání obrázků. Ve výchozím nastavení mají všechny požadavky normální prioritu, ale pro kritické obrázky lze nastavit vysokou prioritu pomocí metody priority. Pokud je ImageView znovu použito (např. v RecyclerView), Picasso automaticky zruší předchozí požadavek a spustí nový, čímž zabrání blikání obrázků při rolování.

Hlavní funkce Picasso

Picasso nabízí sadu funkcí, které pokrývají základní scénáře práce s obrázky v mobilních aplikacích bez zbytečné složitosti.

Víceúrovňová cache

Cache Picasso se skládá ze dvou úrovní: operační paměť pro rychlý přístup a disk pro trvalé uložení. Při požadavku na obrázek knihovna nejprve zkontroluje cache v paměti, poté disk a až poté provede síťový požadavek. To výrazně urychluje zobrazování opakovaně načítaných obrázků.

Transformace obrázků

Transformace umožňují změnit velikost, oříznout nebo otočit obrázek bez dekódování originálu pokaždé. Picasso poskytuje vestavěné transformace CenterCrop a CenterInside a také umožňuje vytvářet vlastní transformace prostřednictvím rozhraní Transformation. Transformované obrázky se ukládají do cache samostatně.

Placeholder a chybové obrázky

Placeholder se zobrazí během načítání obrázku ze sítě a poskytuje uživateli vizuální zpětnou vazbu. Chybový obrázek se zobrazí při selhání načítání. Picasso také podporuje obrázek, který se zobrazí, dokud není načtena nová verze, což je užitečné pro aktualizovatelné avatary.

Načítání z různých zdrojů

Picasso podporuje načítání obrázků z URL, zdrojů, souborů, poskytovatelů obsahu a URI. Metoda load() je přetížena pro všechny tyto typy a knihovna automaticky určuje zdroj. Pro zdroje a soubory Picasso neprovádí síťový požadavek, ale načítá data přímo, což urychluje zobrazování vestavěné grafiky.

Jak funguje Picasso?

Picasso používá architekturu založenou na RequestCreator a Dispatcher. Každý požadavek je vytvořen přes Picasso.get().load() a proveden ve fondu vláken. Dispatcher spravuje frontu požadavků, priority a rušení požadavků při opětovném použití ImageView.

Architektura požadavku

Při volání into(view) vytvoří Picasso objekt Action, který obsahuje URL, transformace, target a callback. Action je umístěn do fronty Dispatcheru. Engine načte obrázek přes Downloader (výchozí OkHttp), dekóduje Bitmap, aplikuje transformace a vrátí výsledek do UI vlákna. Všechny obrázky jsou automaticky přizpůsobeny velikosti ImageView.

java
Picasso.get()
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .resize(400, 300)
    .centerCrop()
    .into(imageView)

Instalace a konfigurace Picasso

Instalace Picasso se provádí přes Gradle. Knihovna je distribuována přes Maven Central a nevyžaduje složitou konfiguraci. Minimální verze Android API je 21.

Přidání závislosti

Do souboru build.gradle na úrovni modulu přidejte implementation 'com.squareup.picasso:picasso:2.8'. Po synchronizaci Gradle je Picasso připraven k použití. Pro práci se sítí Picasso automaticky používá OkHttp, pokud je v projektu přítomen, nebo vestavěný HttpURLConnection.

groovy
dependencies {
    implementation "com.squareup.picasso:picasso:2.8"
}

// Kafka pro načítání z OkHttp (volitelné)
implementation "com.squareup.okhttp3:okhttp:4.12.0"

Indikátor ladění a cache

Indikátor ladění Picasso zobrazuje barevný trojúhelník v rohu každého obrázku: červený pro síťové načítání, modrý pro cache na disku, zelený pro cache v paměti. Aktivuje se voláním setIndicatorsEnabled(true) na instanci Picasso. Výchozí cache je 15 % dostupné paměti zařízení.

Pro konfiguraci vlastní instance Picasso použijte Picasso.Builder. Umožňuje nastavit Executor pro vlákna na pozadí, Downloader pro síťové požadavky, MemoryCache a DiskCache. Vlastní instance je užitečná zejména v testech, kde lze Downloader nahradit stubem vracejícím obrázek bez síťového požadavku.

Příklady použití Picasso

Příklady níže ukazují typické scénáře práce s Picasso: načítání jednoduchého obrázku, použití transformací a načítání v RecyclerView.

Načtení obrázku do ImageView

Základní načtení do ImageView se provede jedním voláním. Picasso automaticky přizpůsobí obrázek rozměrům view s ohledem na scaleType. Placeholder se zobrazuje do dokončení načítání a error — při chybě připojení.

java
Picasso.get()
    .load("https://example.com/photo.jpg")
    .placeholder(R.drawable.loading)
    .error(R.drawable.broken_image)
    .fit()
    .centerCrop()
    .into(imageView)

Aplikace vlastní transformace

Transformace BlurTransformation rozostří obrázek s daným poloměrem. Vlastní transformace implementují rozhraní Transformation s metodou transform. Cache ukládá výsledek transformace pod unikátním klíčem, aby jej nemusela znovu aplikovat.

java
public class BlurTransformation implements Transformation {
    @Override
    public Bitmap transform(Bitmap source) {
        Bitmap blurred = Bitmap.createBitmap(source);
        RenderScript rs = RenderScript.create(context);
        // aplikace rozostření
        source.recycle();
        return blurred;
    }

    @Override
    public String key() {
        return "blur";
    }
}

Načítání obrázků v RecyclerView

V RecyclerView Picasso automaticky ruší požadavky pro ImageView, které opustily obrazovku, a znovu používá již načtené obrázky. To zabraňuje únikům paměti a zajišťuje plynulé rolování.

java
public void onBindViewHolder(ViewHolder holder, int position) {
    String url = items.get(position).getImageUrl();
    Picasso.get()
        .load(url)
        .fit()
        .centerCrop()
        .into(holder.imageView);
}

Picasso nebo Glide: srovnání knihoven

Srovnání Picasso a Glide je častá otázka při výběru knihovny pro načítání obrázků v Androidu. Obě knihovny řeší stejný úkol, ale mají různé priority a vlastnosti použití.

Picasso je vhodnější pro projekty, kde je důležitá jednoduchost a minimální velikost APK. Glide se volí, když je potřeba podpora GIF, video snímků a maximální optimalizace paměti. Glide automaticky škáluje obrázek na přesnou velikost ImageView, což v některých scénářích snižuje spotřebu paměti až o 50 % ve srovnání s Picassem.

Podle testů výkonu ukazuje Glide lepší výsledky při práci s RecyclerView díky mechanismu přednačítání a automatickému rušení požadavků při rychlém rolování. Picasso používá jednodušší strategii, což jej činí předvídatelným, ale méně efektivním při velkých objemech dat.

Picasso se zaměřuje na jednoduchost API a minimální velikost. Glide nabízí širší funkcionalitu: podporu GIF, animovaných obrázků, video snímků a integraci s životním cyklem. Glide také efektivněji spravuje paměť díky automatickému škálování na velikost ImageView.

KritériumPicassoGlide
Velikost knihovny~120 KB~500 KB
Podpora GIFNeAno
Video snímkyNeAno
VývojářSquareGoogle (Bumptech)
APIFluent řetězecRequestBuilder

Podle Android Developer Relations je Glide doporučován společností Google jako preferovaná knihovna pro načítání obrázků v nových projektech. Picasso zůstává vynikající volbou pro jednoduché projekty, kde nejsou potřeba GIF a video snímky.

Často kladené otázky

Čím se Picasso liší od Glide?

Picasso je menší a jednodušší na použití. Glide podporuje GIF a video snímky, efektivněji spravuje paměť a je doporučován Googlem. Výběr závisí na potřebách projektu v oblasti dalších formátů.

Jak vyčistit cache Picasso?

Pro vyčištění cache Picasso použijte metodu Picasso.get().invalidate(url) pro jeden obrázek nebo shutdown() pro úplné vyčištění. Disk cache se smaže při přeinstalaci aplikace nebo pomocí systémových nastavení.

Jak Picasso zpracovává rotaci obrazovky?

Picasso není závislý na rotaci obrazovky. Načtené obrázky jsou uloženy v cache a při obnovení Activity se zobrazují z ní. Pro zrychlení použijte ViewModel společně s Picassem pro uchování načtených dat.

Lze použít Picasso v Kotlinu?

Ano, Picasso je plně kompatibilní s Kotlinem. Vývojáři v Kotlinu mohou používat rozšiřující funkce pro stručnější syntaxi nebo aplikovat knihovnu koptional pro zpracování null hodnot při načítání obrázků.

Jak Picasso spravuje paměť?

Picasso používá LruCache pro cache v paměti, automaticky odstraňuje nepoužívané obrázky. Výchozí velikost cache je 15 % dostupné paměti aplikace. Při nedostatku paměti Picasso uvolňuje zdroje pomocí onTrimMemory.

Shrnutí

  • Picasso — lehká knihovna pro načítání obrázků od Square s minimálním API
  • Cache na disku a v paměti s automatickou správou velikosti
  • Transformace CenterCrop, CenterInside a vlastní přes rozhraní Transformation
  • Placeholder a chybové obrázky pro plynulý uživatelský zážitek
  • Automatické rušení požadavků v RecyclerView zabraňuje zbytečnému načítání
  • Indikátor ladění pomáhá vizuálně určit zdroj obrázku
  • Velikost knihovny jen 120 KB — minimální dopad na velikost APK

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také