Takédisplay resolution, image resolution, pixel resolutionZákladní

Definice

Rozlišení je počet rozlišitelných vzorků obrazu, displeje nebo vykreslovací plochy, nejčastěji vyjádřený v pixelech na šířku a výšku. Určuje, kolik detailu lze zobrazit nebo zpracovat, ale samo o sobě neříká nic jistého o fyzické velikosti, ostrosti, kvalitě panelu ani výkonu aplikace.

Kategorie: Grafické programováníAktualizováno

Nezaměňujte: V tomto hesle jde o obrazové rozlišení; v sítích se slovem rozlišení někdy myslí překlad názvu na adresu, například DNS lookup.

Co rozlišení skutečně měří

Rozlišení popisuje hustotu informací v obrazu nebo počet vzorků, ze kterých se obraz skládá. U displeje se běžně zapisuje jako šířka krát výška, například 1920 × 1080. U obrázku stejný zápis říká, kolik pixelů soubor obsahuje. U tiskových podkladů se často přidává DPI nebo PPI, tedy vztah mezi pixely a fyzickou velikostí.

Rozlišení proto není totéž co kvalita. Dva displeje se stejným počtem pixelů mohou mít jiný kontrast, barevný rozsah, obnovovací frekvenci, odezvu i fyzickou velikost. Velký monitor s rozlišením 1920 × 1080 může působit méně ostře než malý telefon se stejným nebo vyšším počtem pixelů, protože pixely jsou na monitoru roztažené na větší plochu.

Pixely obrazu nejsou vždy pixely zařízení

Web a mobilní rozhraní rozlišují mezi logickými pixely a fyzickými pixely. CSS pixel je jednotka rozvržení, se kterou pracuje designér a prohlížeč. Fyzický pixel je skutečný světelný bod na panelu. Poměr mezi nimi popisuje například devicePixelRatio. Displej s poměrem 2 může jeden CSS pixel vykreslit do mřížky 2 × 2 fyzických pixelů.

Praktický důsledek je důležitý pro ikony, fotografie a canvas. Obrázek vložený v nízkém rozlišení může být rozměrově správně, ale na jemném displeji bude měkký. Web proto často používá responzivní obrázky, varianty 1x a 2x nebo vektorové SVG. U plátna canvas je běžné zvětšit interní bitmapu podle poměru zařízení, ale zachovat stejnou velikost v CSS.

Rozlišení v renderingu a grafickém řetězci

V grafickém programování je rozlišení rozměr framebufferu, textury nebo výstupního okna. Rasterizace převádí geometrii na fragmenty právě v této mřížce. Vyšší rozlišení obvykle znamená více fragmentů, větší paměťové nároky a více práce pro GPU. Když scéna používá velké textury, roste také tlak na propustnost paměti.

Rozlišení souvisí i se zubatými hranami. Jemnější mřížka dokáže skrýt část aliasingu, ale není náhradou za anti-aliasing. Antialiasing řeší vzorkování hran a detailů, zatímco vyšší rozlišení pouze přidává více bodů, do kterých lze obraz spočítat. Herní enginy proto často kombinují interní renderovací rozlišení, škálování a vyhlazování.

Kde vyšší rozlišení naráží na limity

Vyšší rozlišení zvyšuje čitelnost detailů jen tehdy, když zbytek řetězce dodá odpovídající data. Nekvalitní fotka se zvětšením nestane ostřejší, pouze se interpoluje. Stejně tak aplikace nemusí vypadat lépe, pokud její ikony, textury nebo font rendering nejsou připravené na jemnější displeje.

Výkonový dopad je často kvadratický: zdvojnásobení šířky i výšky znamená čtyřnásobek pixelů. Rozlišení proto ovlivňuje velikost souborů, spotřebu paměti, datové přenosy, výdrž baterie i snímkovou frekvenci. Správná volba rozlišení je kompromis mezi ostrostí, výkonem a velikostí zařízení.

Příklady z praxe

  1. Produktová fotka pro běžný a jemný displej

    E-shop zobrazuje produktovou fotografii v kartě široké 400 CSS pixelů. Na běžném monitoru prohlížeč stáhne menší soubor, zatímco na jemném displeji může použít variantu 2x. Výsledkem je ostřejší náhled bez toho, aby každý uživatel povinně stahoval největší obrázek.

    <img src="product-800.jpg"
         srcset="product-800.jpg 1x, product-1600.jpg 2x"
         width="400" height="300"
         alt="Detail produktu">
  2. Ostrý canvas na Retina displeji

    Dashboard kreslí graf do prvku canvas o velikosti 300 × 150 CSS pixelů. Bez úpravy interního rozlišení by byl graf na displeji s poměrem 2 rozmazaný. Zvětšení bitmapy podle devicePixelRatio zachová rozvržení stránky a zároveň zlepší ostrost čar i textu.

    const ratio = window.devicePixelRatio || 1;
    const canvas = document.querySelector('canvas');
    const width = 300;
    const height = 150;
    
    canvas.style.width = `${width}px`;
    canvas.style.height = `${height}px`;
    canvas.width = width * ratio;
    canvas.height = height * ratio;
    
    const ctx = canvas.getContext('2d');
    ctx.scale(ratio, ratio);
    ctx.fillText('Ostrý text', 20, 40);

Časté omyly

MýtusVyšší rozlišení vždy znamená lepší obraz.
Ve skutečnostiVyšší rozlišení přidává více pixelů, ale kvalitu ovlivňuje také zdrojový materiál, panel, optika, komprese, kontrast a způsob škálování. Špatně zaostřená nebo silně komprimovaná fotka nebude kvalitní jen proto, že má velké rozměry.
MýtusFull HD je na každém zařízení stejně ostré.
Ve skutečnostiFull HD znamená stejný počet pixelů, ne stejnou hustotu. Ostrost závisí na fyzické velikosti obrazovky a pozorovací vzdálenosti, takže 1920 × 1080 na telefonu a na velkém monitoru nepůsobí stejně.
MýtusDPI u obrázku rozhoduje o tom, jak velký bude na webu.
Ve skutečnostiWebové zobrazení se řídí hlavně rozměry v pixelech, CSS a pravidly prohlížeče. Hodnota DPI v metadatech může být důležitá pro tiskový workflow, ale běžný webový layout podle ní obrázek automaticky neměří.

Časté dotazy

Proč má telefon s menším displejem větší rozlišení než monitor?
Telefon s menším displejem může mít větší rozlišení, protože rozlišení není fyzická úhlopříčka. Počet pixelů a velikost panelu jsou dvě různé vlastnosti. Malý telefon často používá velmi jemnou mřížku, aby text, ikony a fotografie působily ostře z krátké pozorovací vzdálenosti. Velký monitor může mít méně pixelů na palec, protože se obvykle sleduje z větší vzdálenosti.
Kdy zvýšit renderovací rozlišení místo zapnutí anti-aliasingu?
Zvýšení renderovacího rozlišení pomáhá ve chvíli, kdy obraz ztrácí jemné detaily napříč celou scénou, například u textur, vzdálených objektů nebo drobné geometrie. Anti-aliasing je vhodnější, když hlavní problém tvoří zubaté hrany a třpytivé kontury. Rozlišení je výpočetně drahé, protože přidává mnoho pixelů. Praktické nastavení často kombinuje mírné zvýšení interního rozlišení s vhodným vyhlazováním.
Co znamená 2x obrázek ve webovém designu?
Obrázek označený jako 2x obsahuje přibližně dvojnásobný počet pixelů na šířku i výšku oproti velikosti, ve které se má zobrazit v rozhraní. Webová karta široká 300 CSS pixelů tedy může použít bitmapu širokou 600 pixelů. Jemný displej má dost fyzických bodů na vykreslení detailu, takže fotografie nebo ikona nepůsobí rozmazaně.
Proč screenshot z Retina displeje vypadá obrovsky?
Screenshot z jemného displeje může být větší, protože systém často ukládá fyzické pixely, ne CSS nebo logické body rozhraní. Okno široké 1000 logických bodů může mít při poměru 2 výsledný snímek široký 2000 pixelů. Grafický editor potom ukáže skutečný bitmapový rozměr souboru, zatímco původní aplikace zobrazovala stejné okno v logických jednotkách.

Zdroje

  1. CSS Values and Units Module Level 4(otevře se v novém okně)W3C
  2. CSSOM View Module(otevře se v novém okně)W3C
  3. HTML Standard(otevře se v novém okně)WHATWG
  4. Window: devicePixelRatio property(otevře se v novém okně)MDN Web Docs

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.