Portál AbcLinuxu, 5. května 2025 21:50

Dotaz: kvalita u příkazu convert

3.4.2017 10:39 DWD | skóre: 18 | blog: papiry
kvalita u příkazu convert
Přečteno: 590×
Odpovědět | Admin

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í.

Jsem kretén, který ví lautr hovno o Linuxu a o počítačích vůbec.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.4.2017 10:53 NN
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nedavno se to resilo.
3.4.2017 10:56 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Odpovědět | | Sbalit | Link | Blokovat | Admin
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.

3.4.2017 11:15 DWD | skóre: 18 | blog: papiry
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Zkoušel jsem to teď při JPG a tam to vypadá, že se to chová přibližně jak v Gimpu, až na hodnotu 0, ta v convertu nijak nesnižuje kvalitu ani velikost souboru, narozdíl od Gimpu. A zkoušel jsem při PNG convert s hodnotami 0až9, ale nedělá to skoro nic; velikosti souboru vůbec neodpovídá, aby bylo čím vyšší hodnota, tím méně kB, narozdíl od Gimpu. Takže nevím, jakým způsobem uvádět hodnoty, když vyrábím png.
Jsem kretén, který ví lautr hovno o Linuxu a o počítačích vůbec.
3.4.2017 11:32 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Ještě si vzpomínám, novější verze balíčku ImageMagick měly jednu takovou záludnost, že příkaz 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.)
4.4.2017 18:08 trubicoid2
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
nema to souvislost s volbou pri kompilaci --with-quantum-depth=8,16,32?

ale jpeg to dela i tak normalne 8bit*3
3.4.2017 17:19 Sten
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
U toho JPEG quality u většiny programů znamená Q factor, což je sada kvantizačních matic definovaných Independent JPEG Group. Některé programy mohou definovat i vlastní koeficienty (třeba Photoshop to nabízí), ale většinou tam musíte zvolit, že chcete použít nestandardní („vylepšenou“ či podobně) matici.
Josef Kufner avatar 3.4.2017 11:32 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Odpovědět | | Sbalit | Link | Blokovat | Admin
Komprese u PNG neovlivňuje kvalitu. PNG používá bezeztrátovou kompresi. Úroveň komprese tedy ovlivní jen rychlost načítání a ukládání obrázku.
Hello world ! Segmentation fault (core dumped)
3.4.2017 16:12 DWD | skóre: 18 | blog: papiry
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
A jaktože v Gimpu mi ta úroveň komprese ovlivní i velikost souboru png?
Jsem kretén, který ví lautr hovno o Linuxu a o počítačích vůbec.
3.4.2017 17:05 Sten
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Protože komprese slouží právě k tomu, aby se snížila velikost souboru. Ale nijak to nemění kvalitu uloženého obrázku.
3.4.2017 17:47 chrono
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Pri png to číslo znamená zvyčajne len to, aký stupeň zlib kompresie sa použije.

Ak je cieľom mať čo najmenšie png, tak je rozumné použiť napr. optipng (ten program postupne vyskúša rôzne parametre prekladania riadkov, rôznu kompresiu... a použije také parametre, pri ktorých budú výsledné dáta najmenšie).
3.4.2017 19:27 DWD
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Takže pro png nemá parametr quality v convertu smysl? Tam by se spíš hodil parametr compress s hodnotou 0 až 9?
4.4.2017 12:37 salam
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Máš pravdu, pro laika je to matoucí. Ber to jako 'kvalita komprese' (ne jako 'kvalita výsledku'). U knihovny zlib (a taky u klasického ZIPu, který je na ní založen) je 0 bez komprese až po hodnotu 9 (= maximální komprese). Pokud nejde o obrázek, který bude na webu načítaný 100x za sekundu, tak nemají optimalizace specializovanými programy větší smysl (ona ta komprese pak trvá i třeba minuty, je na posouzení uživatele, zda to stoji za ušetření pár kil...).
Pro svižnou práci s PNG doporučuji kompromisní hodnotu 4.
4.4.2017 13:05 salam
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
tak to beru zpět, je to složitější, viz moje odpověď níže
Josef Kufner avatar 3.4.2017 19:01 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Ano. Velikost bude jiná, bude to jinak dlouho trvat, ale obrázek bude stále stejný.
Hello world ! Segmentation fault (core dumped)
3.4.2017 19:23 DWD
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Kolika bitové obrázky je lepší používat? 16 bitové nebo 8 bitové. U kterých bude lepší kompatibilita, abych ten soubor mohl otevřít v různých aplikacích (různé prohlížeče, různé programy na úpravu obrazu, a další), operačních systémech, a podobně? A to všechno s těmi bity a tou kompatibilitou jaké je to u souborů typu PNG, jaké u JPG, a dalších?
4.4.2017 07:53 MM
Rozbalit Rozbalit vše Re: kvalita u příkazu convert

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).

4.4.2017 09:54 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: kvalita u příkazu convert

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.

4.4.2017 10:30 MM
Rozbalit Rozbalit vše Re: kvalita u příkazu convert

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).

4.4.2017 18:17 trubicoid2
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
tribe ten zopflipng umi snizit paletu prepinacem:

--lossy_8bit: convert 16-bit per channel image to 8-bit per channel.
4.4.2017 13:05 salam
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Odpovědět | | Sbalit | Link | Blokovat | Admin
No tak u toho PNG je to fakt maso - tohle vymýšlel blázen :-) 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.
4.4.2017 14:59 trubicoid2
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
ano, 95 by se melo pouzivat, ale i tak je dobre pro lepsi kompresi jeste prejet optipng nebo zopflipng
4.4.2017 15:18 DWD | skóre: 18 | blog: papiry
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
Jak u souboru jpg poznám, kolik má bitů? file -k soubor , mi řekne pendrek, stejně tak klik na vlastnosti souboru.
Jsem kretén, který ví lautr hovno o Linuxu a o počítačích vůbec.
4.4.2017 15:25 salam
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
JPEG je buď grayscale (= 1x8 bitů) nebo barevný (= 3x8 bitů). (Ano vím, že toto tvrzení má platnost v cca 99,999 % - 16bitové rozšíření sice existuje, ale naprosto nikde se nepoužívá :-)
4.4.2017 15:44 trubicoid2
Rozbalit Rozbalit vše Re: kvalita u příkazu convert
to 95 je samozrejme k png

k bitum v jpg:
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.869
jeste se muze hodit odhad kvality v jpg:

identify -format '%Q' 2015-08-06\ 11.29.34.jpg 
96
identify je ze stejnyho baliku, jako convert, tedy imagemagick

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.