Schopnost rozlišení obrazu dnešních zařízení pro pořizování fotografií, jako jsou chytré telefony a digitální fotoaparáty, se každým dnem zvyšuje. Skutečný obchod nastává, když musíme tyto obrázky sdílet, nahrát je do cloudového zařízení nebo je dokonce uložit na zařízení s omezeným úložištěm. Grafičtí designéři se také musí vypořádat se stejným problémem, ale jsou dobře vybaveni nástroji, které dokážou obrázky komprimovat, aby je bylo možné snadno sdílet se zúčastněnými stranami.
Pro Ubuntu existuje mnoho grafických nástrojů, které by vám umožnily optimalizovat a komprimovat vaše jpegs, ale zde budeme diskutovat o nástroji příkazového řádku s názvem Jpegoptim. To je užitečné zejména pro terminálově zdatné, kteří rádi plní své úkoly s minimálními systémovými prostředky. Jpegoptim vám může pomoci při komprimaci souborů jpegs, jpg a jfif se ztrátou kvality i bez ní, v závislosti na tom, co hledáte.
V tomto článku popíšeme, jak můžete nainstalovat nástroj příkazového řádku Jpegoptim na Ubuntu. Vysvětlíme také různé způsoby, jak můžete tuto aplikaci použít k optimalizaci a kompresi obrazových souborů jpeg. Článek vám také umožní psát a spouštět bash skript, který zautomatizuje proces komprimace všech jpegů umístěných v jednom adresáři.
Spustili jsme příkazy a postupy uvedené v tomto článku na systému Ubuntu 18.04 LTS.
Instalace Jpegoptim na Ubuntu
Jpegoptim je snadno dostupný prostřednictvím oficiálního úložiště Ubuntu a lze jej snadno nainstalovat z příkazového řádku pomocí příkazu apt-get.
Otevřete aplikaci Terminal buď prostřednictvím systémového vyhledávání ve spouštěči aplikací, nebo pomocí zkratky Ctrl+Alt+T.
Dalším krokem je aktualizace indexu úložiště vašeho systému pomocí následujícího příkazu:
$ sudo apt-get update
To vám pomůže při instalaci nejnovější dostupné verze softwaru z internetu. Vezměte prosím na vědomí, že pouze oprávněný uživatel může přidávat, odebírat a konfigurovat software na Ubuntu.
Nyní jste připraveni nainstalovat Image Jpegoptim; můžete tak učinit spuštěním následujícího příkazu jako sudo:
$ sudo apt-get install jpegoptim
Systém vás může požádat o heslo pro sudo a také vám poskytne možnost Y/n pro pokračování v instalaci. Zadejte Y a poté stiskněte Enter; software se nainstaluje do vašeho systému. Tento proces však může nějakou dobu trvat v závislosti na rychlosti vašeho internetu.
Pomocí následujícího příkazu můžete zkontrolovat číslo verze aplikace a také ověřit, že je skutečně nainstalována ve vašem systému:
$ jpegoptim --version
Použití Jpegoptim pro kompresi obrázků
Pojďme nyní prozkoumat sílu Jpegoptim pomocí následujících způsobů, jak jej můžete použít:
Bezztrátová komprimace jednoho obrázku
Pokud chcete komprimovat jeden obrázek, aniž byste chtěli slevit z kvality, použijte následující příkaz:
$ jpegoptim image_name.jpg
Příklad:
$ jpegoptim sample.jpg
Poznámka: Mějte prosím na paměti, že nástroj přepíše stávající obrázek, takže je dobré mít původní obrázek uložený někde jinde.
Pokud chcete, aby byl obrázek komprimován ještě více, můžete stejný příkaz spustit znovu. Jpegoptim však začne kompresi vynechávat, pokud dosáhne limitu, kdy máte bezztrátovou kvalitu obrazu s největší kompresí.
Zde je návod, jak by výstup vypadal v takové situaci:
Komprimujte obrázek do jiné složky
Pokud se bojíte, že ztratíte svůj původní obrázek, protože ho Jpegoptim přepíše, můžete nástroji sdělit, aby komprimovaný obrázek uložil do jiné složky.
Nejprve vytvořte složku, kam chcete uložit komprimované obrázky. Pokud je chcete uložit do již existující složky, nemusíte vytvářet novou. K provedení komprese pak můžete použít následující syntaxi příkazu:
$ jpegoptim -d ./[cílová-složka] -p [název_obrázku].jpg
Například:
$ jpegoptim -d ./compressed -p sample.jpg
Výše uvedený příkaz zkomprimuje a uloží můj soubor sample.jpg do již existující složky s názvem „compressed“.
Zkontrolujte potenciální kompresi
Pokud chcete předem vidět, jak moc je obraz schopen komprimovat, můžete simulovat kompresi obrazu pomocí Jpegoptim. Následující příkaz ve skutečnosti obrázek nezkomprimuje, pouze vám řekne, jak moc bude obrázek komprimován, pokud se ho někdy pokusíte komprimovat pomocí Jpegoptim.
Následující příklad dále vysvětlí proces:
Mám obrázek jpg s názvem sample.jpg. Jeho velikost nejprve vytisknu pomocí příkazu du takto:
$ du sample.jpg
Potom použiji parametr -n s příkazem jpegoptim, abych věděl o jeho potenciální kompresi.
$ jpegoptim -n sample.jpg
Když jsem znovu zkontroloval jeho velikost po použití příkazu jpegoptim, jak je uvedeno výše, neviděl jsem žádnou změnu v jeho velikosti. To zajistí, že příkaz jpeg s parametrem -n zobrazí pouze budoucí procento komprese a velikost, aniž by ve skutečnosti komprimoval obrázek.
Komprimujte obrázky „se“ ztrátou kvality
Někdy chceme komprimovat naše obrázky s vědomím, že proces nebude bezztrátový. Dobrá věc je, že s Jpegoptim můžete určit, s jakou ztrátou kvality jste v pořádku. Existují dva způsoby, jak můžete „ztrátově“ komprimovat obrázky;
1. Použití parametru -m k určení faktoru kvality/procenta: Nastaví maximální faktor kvality obrazu (vypne režim bezztrátové optimalizace, který je ve výchozím nastavení povolen). Tato možnost sníží kvalitu těch zdrojových souborů, které byly uloženy pomocí nastavení vyšší kvality. Zatímco soubory, které již mají nastavení nižší kvality, budou komprimovány pomocí metody bezztrátové optimalizace.
Zde je návod, jak určit procento komprese:
$ jpegoptim -m[percentage_in_numbers] image.jpg
Toto byl můj původní obrázek:
A takto to vypadá s 10procentním faktorem kvality:
2. Použití možnosti –size k určení velikosti komprimovaného obrázku: Pokuste se optimalizovat soubor na danou velikost (vypne režim bezztrátové optimalizace). Cílová velikost se udává buď v kilobajtech (1 – n)
nebo jako procento (1 % – 99 %) původní velikosti souboru.
Takto můžete určit velikost v kb pro výsledný obrázek:
$ jpegoptim --size=[size-in-kb] image_name.jpg
Dávková optimalizace obrazových souborů
Existuje několik způsobů, jak můžete použít Jpegoptim ke kompresi více souborů najednou.
První je zadat všechny soubory, které chcete komprimovat, v jediném příkazu jpegoptim následovně:
$ jpegoptim file1.jpeg file2.jpg file3.jpg
Příkaz přepíše všechny zadané soubory a nově zkomprimované soubory.
Druhou metodou je říct Jpegoptimu, aby komprimoval všechny soubory určitého typu, například jpg, všechny umístěné ve stejné složce:
$ jpegoptim *.jpg
Abych viděl, jak tento příkaz funguje, uvedl jsem všechny soubory ve složce Obrázky s parametrem -l. Tento příkaz vytiskne celkovou velikost všech obrázků umístěných v aktuální složce:
$ ls -l
Pak jsem použil stejný příkaz ls -l, abych zjistil, jak velký rozdíl má příkaz Jpegoptim k celkové velikosti všech souborů. Pozoruhodný rozdíl v celkových bajtech můžete vidět v následujícím výstupu:
To byly jen dva soubory; můžete takto ušetřit spoustu místa. Krása celého procesu spočívá v tom, že neslevujete z kvality vašich cenných snímků. Totéž můžete samozřejmě udělat s jinými formáty souborů podporovanými Jpegoptim.
Třetí a velmi užitečnou možností je, že můžete dokonce využít skript shellu k automatizaci komprimace všech souborů jednoho typu umístěných v aktuálním adresáři. Postup je následující:
Bash Script pro kompresi všech souborů jpg v aktuálním adresáři
Tato část vysvětlí, jak můžete napsat skript shellu, který zkomprimuje všechny jpg umístěné v aktuálním adresáři do složky s názvem „compressed“. Skript nevytvoří složku; pouze uloží výstup do již vytvořené složky s tímto názvem.
Nejprve se přesuneme do složky Dokumenty, kde vytvoříme skript:
$ cd Documents
Poznámka:Skript můžete uložit kamkoli chcete. Je vhodné vytvořit všechny skripty ve stejné složce, abyste neztratili přehled o tom, kam jste je uložili. Osobně preferuji ukládání všech svých skriptů do složky Dokumenty.
Vytvořte skript
Otevřete nový soubor skriptu v jednom z vašich oblíbených textových editorů. Použijeme nano editor k otevření prázdného souboru skriptu s názvem compressAll.sh
$ nano compressAll.sh
Do tohoto prázdného souboru přidejte následující skript.
#!/bin/sh # compress all *.jpg files in the current directory # and place them in ./compressed directory # with the same modification date as original files. for i in *.jpg; do jpegoptim -d ./compressed -p "$i"; done
Tip: Místo psaní celého skriptu do bash souboru jej můžete zkopírovat odtud a vložit do Terminálu pomocí Ctrl+Shift+V nebo pomocí možnosti Vložit z nabídky po kliknutí pravým tlačítkem.
Takto by váš soubor vypadal:
Nyní ukončete soubor pomocí zkratky Ctrl+X. Poté budete požádáni o uložení souboru na „Uložit upravený vyrovnávací paměť? výzva. Zadejte Y a stiskněte Enter; váš soubor skriptu je nyní uložen v aktuální složce.
Chcete-li, aby tento soubor mohl spustit aktuální uživatel, spusťte ve svém terminálu následující příkaz:
$ chmod +x compressAll.sh
Chcete-li skript spustit, změňte svůj aktuální adresář na ten, jehož jpg chcete komprimovat (v mém případě adresář Pictures). Ujistěte se, že adresář obsahuje složku s názvem „compressed“. Pokud tam není, vytvořte jej před spuštěním skriptu.
Spusťte skript
Nakonec spusťte skript následovně:
$ /home/[username]/Documents/compressAll.sh
Tento příkaz spustí bash skript ze složky, ve které jste jej vytvořili. To je důvod, proč jste museli zadat celou cestu k tomuto souboru .sh.
Uvidíte, že všechny komprimované soubory budou zapsány do složky „compressed“. Můžete to ověřit pomocí následujícího příkazu:
$ ls compressed
To vše bylo o optimalizaci obrazu pomocí nástroje Jpegoptim. Pro další podrobnosti si můžete manuálovou stránku prohlédnout pomocí následujícího příkazu:
$ man jpegoptim
Sdílení obrázků přes internet a jejich nahrání do místa s omezenou šířkou pásma a úložištěm by nyní neměl být problém