Portál AbcLinuxu, 29. října 2025 14:20
Pomoci příkazu convert upravuji velikost obrázků, typ souboru a jiné věci, ale teď jsem potřeboval také nastavit kompresní poměr. V manualových stránkách jsem našel parametr quality, ale nenašel jsem tam, jakým stylem se tam zadává hodnota k tomu parametru. Zatím se domnívám:
Mám-li vyrobit soubor typu JPEG, tak se ta hodnota pohybuje 0 až 100, přičemž čím vyšší číslo, tím menší komprese a vyšší kvalita.
Mám-li vyrobit soubor typu PNG, tak se ta hodnota pohybuje 0 až 9, přičemž čím vyšší číslo, tím větší komprese a nižší kvalita.
Nebo je tomu jinak? Vycházel jsem z hodnot, které nabízí program Gimp při ukládání.
Mám-li vyrobit soubor typu JPEG, tak se ta hodnota pohybuje 0 až 100, přičemž čím vyšší číslo, tím menší komprese a vyšší kvalita.
Ano, ale AFAIK neexistuje nějaká univerzální škála, takže "90" v jednom programu nemusí nutně znamenat totéž co "90" v jiném.
Mám-li vyrobit soubor typu PNG, tak se ta hodnota pohybuje 0 až 9, přičemž čím vyšší číslo, tím větší komprese a nižší kvalita.
Formát PNG jako takový je bezztrátový, ke ztrátě informace dochází jen konverzí na paletu barev omezené velikosti. Vyšší úroveň komprese by se tak měla projevit jen na velikosti výsledného souboru a časových a paměťových nárocích na konverzi.
convert defaultně vytvářel soubory s 16-bitovou barevnou hloubkou, takže bylo potřeba přidávat "-depth 8", aby vznikl rozumně použitelný soubor. (Ale nevím, jestli to později zase nezměnili zpátky.)
Obecně - na fotky a obrázky s barevnými přechody použij formát JPG a na grafiku, kde jsou barevné plochy/čáry stejnou barvou (tipicky např. snímky obrazovky) použij formát PNG (nebo GIF).
PNG už je dnes podporováno dobře, dříve byly (dřívější w.explorer - ještě na XPčkách) problémy s (polo)průhledností a pod., tam pak bylo potřeba použít formát GIF (který ale má omezení - umí pouze plnou průhlednost a umí méně barev, ale komatibilita byla dříve lepší). Vždy záleží jaká kvalita je pro tebe ještě přijatelná a snažíš se o co nejmenší velikost souboru, což jde proti sobě.
Jinak platí, že čím méně bitů tím menší soubor, ale menší počet barev které lze zobrazit/zachovat v obrázku (nižší kvalita).
To jsou dvě různé věci. Jedna je počet barev v paletě, druhá je bitová hloubka barevných odstínů v té paletě. Poslední odstavec vaší odpovědi se týká spíš té první, ale tazatel se IMHO ptal spíš na tu druhou (vzhledem k možnostem 8 a 16 bitů).
Pokud se bavíme o formátech pracujících s indexovanými barvami, je velmi nepravděpodobné, že by nároky na barevnou věrnost byly takové, aby bylo potřeba mít 16-bitovou hloubku, tím spíš, že většina uživatelů stejně nedisponuje výstupním zařízením, kde by rozdíl vůbec šel poznat. (A bavíme se o PNG, takže jemné barevné přechody taky nebudou moc typické.)
Poznámka: s vlivem barevné hloubky na velikost souboru je to trochu složitější. Zatímco velikost palety ovlivňuje velikost souboru celkem přímo, protože má vliv na množství dat reprezentujících každý pixel, barevná hloubka ovlivní jen velikost palety. Takže třeba u velkého obrázku s relativně málo barvami v paletě (např. screenshot okna často vypadá rozumně i třeba s 64 barvami) je ten rozdíl docela malý, ale u malé ikonky to může být hodně znát.
Děkuji za doplnění.
Samozřejmě souhlasím se vším co jste napsal. 8bitové barvy budou pro tazatele zřejmě dostačující. Jen pro tazatele ještě znovu vypíchnu, že velikost PNG souborů lze velmi zmenšit omezením barev palety (samozřejmě na úkor kvality - obzvlášť u těch barevných přechodů, fotek atp. u kterých to není vhodná metoda) - což z mého příspěvku nebylo vůbec jasné (za což se omlouvám).
Jen jsem chtěl připomenout, co tu ještě nezaznělo - že v závislosti na typu obrázků je dobré vybrat formát a možnosti zmenšení (např též možnosti omezení barevné palety u PNG formátu).
Aspoň, že je to zdokumentované.
První cifra určuje kompresi zlib: 0 = bez komprese, 9 = maximum.
Druhá cifra určuje typ filtru: 0=none, 1=sub, 2=up, 3=average, 4=Paeth, 5=auto; (případně to může v zlibu vynutit RLE nebo prostý Huffman - pro normálního člověka zcela nepotřebné)
Filtry jsou věc, která umí u některých obrázků zásadně vylepšit kompresi. Třeba při tom filtru sub se nekomprimují přímo barevné hodnoty, ale rozdíl oproti předchozímu pixelu. U filtru Up se komprimuje rozdíl aktuálního řadku a předešlého - pokud jsou stejné, tak to je hromádka nul... Každý řádek může mít různý filtr, ta automatika vyzkouší všechny varianty a nahrubo odhadne ten 'nejlepší'.
Takže pro maximální kompresi doporučuji 95 a pro svižnou práci 44.
file -k soubor , mi řekne pendrek, stejně tak klik na vlastnosti souboru.
identify 2015-08-06\ 11.29.34.jpg 2015-08-06 11.29.34.jpg JPEG 2592x1936 2592x1936+0+0 8-bit sRGB 1.947MB 0.870u 0:00.869jeste se muze hodit odhad kvality v jpg:
identify -format '%Q' 2015-08-06\ 11.29.34.jpg 96identify je ze stejnyho baliku, jako convert, tedy imagemagick
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.