Dávková optimalizace a konverze obrázků pomocí ImageMagick

  • ImageMagick, mogrify a convert vám umožňují měnit velikost, převádět a optimalizovat velké objemy obrázků z terminálu s velkou flexibilitou.
  • Další nástroje jako cwebp, jpegtran a img2webp vylepšují kompresi a podporu moderních formátů, jako je WebP, pro webové použití.
  • Dávkové zpracování lze automatizovat pomocí Shellových skriptů nebo integrovat do jazyků jako PHP, Python nebo Node.js.
  • Grafická řešení jako Converseen usnadňují používání ImageMagicku pro hromadné konverze a přejmenování bez nutnosti manipulace s příkazy.

Optimalizujte obrázky v dávkách pomocí ImageMagicku

Pokud pracujete s obrázky denně, dříve či později budete muset čelit tomuto obávanému okamžiku: změnit velikost, formátovat nebo optimalizovat stovky nebo tisíce souborů najednouDělat to ručně v grafickém editoru je šílené, nemluvě o obrovské ztrátě času. Dobrou zprávou je, že s ImageMagickem a několika souvisejícími nástroji můžete téměř celý proces automatizovat z terminálu.

V tomto článku se podíváme, jak toho využít ImageMagick pro dávkovou optimalizaci a konverzi obrázkův případě potřeby jej kombinujte s dalšími nástroji, jako například mogrify, cwebp o jpegtranPraktické příklady uvidíte v Linuxu (bash), ale mnoho příkazů je perfektně přizpůsobitelných pro Windows a macOS.

Proč potřebujeme optimalizovat a dávkově převádět obrázky?

Úprava jedné fotografie je velmi jednoduchá: Jakýkoli prohlížeč nebo grafický editor umožňuje změnit velikost a formát. dvěma kliknutími. Problém začíná, když už to není jen jedna nebo dvě fotografie, ale desítky tisíc roztroušených po složkách nebo obrovských knihovnách.

Představte si případy jako modelovací web s přes 300 000 obrázků JPEG a PNGMnoho z těchto obrázků má velikost mezi 1 a 15 MB. Pokud se velká část vašeho publika připojuje přes slabé připojení (například uživatelé v Německu s pomalým ADSL), načítání těchto obrázků na webové stránky se stává noční můrou jak pro uživatele, tak pro server.

Je také velmi běžné, že je potřeba zmenšit velikost fotografií najednou odeslat e-mailem, sdílet přes Dropbox/Google Drive nebo připravit prezentační materiály. Ruční práce je zdlouhavá a neefektivní; rozumné je úkol automatizovat pomocí skriptů a konzolových nástrojů.

Škodlivý PDF
Související článek:
Jak detekovat škodlivý PDF soubor ve Windows

Obecné možnosti pro projekty s mnoha obrázky

Než se ponoříme do ImageMagicku, je důležité pochopit, že existuje několik strategií, jak s ním zacházet. rozsáhlé mediální knihovny, jako například u velmi velkého webu:

  • Pluginy nebo nástroje pro hromadnou konverzi v rámci CMS (například pluginy pro WordPress, které převádějí do WebP). Mohou fungovat dobře ve středně velkých knihovnách, ale se stovkami tisíc obrázků často selhávají, vyprší jim časový limit nebo přetíží server.
  • Optimalizace na vrstvě CDN (Například placený tarif Cloudflare s optimalizací/polštinou). V tomto případě CDN nabízí optimalizované verze (nebo WebP), aniž byste museli znovu převádět všechny původní soubory. Je to pohodlná a škálovatelná možnost, i když jste závislí na poskytovateli a nesnižujete místo na disku na původním serveru.
  • Dávkové zpracování na úrovni systému Používání ImageMagick, cwebp a dalších nástrojů CLI. Vyžaduje to trochu více počáteční práce (skripty, testování, zálohy), ale dává vám to plnou kontrolu nad formáty, kvalitami, cestami a pracovními postupy. Je to ideální, když chcete vyčistit starou knihovnu nebo připravit zdroje velmi specifickým způsobem.

V mnoha velkých projektech je nejlepším přístupem kombinace obou: Optimalizace a dávkový převod historických dat pomocí ImageMagick a současně, spoléhání se na CDN vyleštit a zobrazit co nejlehčí verzi podle prohlížeče.

Základní instalace ImageMagicku a souvisejících nástrojů

První věc je samozřejmě jeho instalace ImageMagick a další nástroje podle toho, který chcete použít. Ve většině linuxových distribucí můžete jednoduše použít správce balíčků:

  • Debian/Ubuntu (a odvozené verze):
    sudo apt-get install imagemagick
    nebo
    sudo aptitude install imagemagick
  • openSUSE, Fedora atd.: nainstaluje balíček imagemagick z oficiálních repozitářů nebo prostřednictvím grafických nástrojů vaší distribuce.

V systémech Windows a macOS si můžete instalační program stáhnout přímo z Oficiální webové stránky ImageMagickukterý poskytuje binární soubory připravené k použití. Během instalace nezapomeňte vybrat možnost přidání binárních souborů do Systémová CESTA být schopen používat magick, convert o mogrify přímo z terminálu.

Pokud vám oficiální balíčky způsobují problémy (například chyby při převodu z XCF V Debianu/Ubuntu existují skripty jako „ImageMagick Easy Install (IMEI)“, které automaticky stahují, kompilují a instalují novější verzi ze zdrojových kódů.

Některá komplexní lokální vývojová prostředí, jako například ServBay, již zahrnují Předinstalované programy ImageMagick, cwebp, jpegtran, djpeg, cjpeg a img2webp a přidány do PATH, což vám umožní používat tyto nástroje bez další konfigurace z integrovaného terminálu.

Klíčové příkazy ImageMagicku pro základní použití

ImageMagick není samostatný program, ale kolekce utilit příkazového řádku zaměřené na manipulaci s obrázky. Nejtypičtější při optimalizaci a konverzi jsou:

  • magie / konvertita: transformace obrázků (změna velikosti, formátu, použití filtrů, kompozice atd.). V moderních verzích je „hlavní“ příkaz magick; convert Obvykle existuje jako symbolický odkaz pro zajištění kompatibility.
  • mogrifypodobné jako convertale navrženo speciálně pro dávkové zpracování a přepsání původních souborů pokud mu neřekneš jinak.
  • identifikovat: zobrazuje informace o obrázku (formát, rozměry, barevnou hloubku atd.).

Chcete-li získat rychlá fakta Z konkrétního obrázku, například loga v XCF, můžete použít:

magick identify logo.xcf

Pokud chcete mnohem podrobnější zprávu, přidejte -výřečný A budete mít všechna důležitá metadata rozčleněná. Je to užitečné pro zajištění toho, aby Proces konverze zachovává nebo mění to, co chcete.

Změna formátu a velikosti jednotlivých obrázků

Dávková konverze obrázků pomocí ImageMagick

Nejzákladnějším úkolem je převést z jednoho formátu do druhéhoNapříklad z JPEG do PNG:

magick convert fotoorigen.jpg fotoresultado.png

ImageMagick rozhoduje o výstupním formátu na základě konečná přípona souborutakže pokud se změníš .jpg podle .png, .webp nebo cokoli chcete, je to vygenerováno přímo v tomto formátu.

magick convert fotoorigen.jpg -resize 800x600 -quality 90 fotoresultado.jpg

V tomto příkladu je obrázek upraven tak, aby 800 × 600 pixelů a je to stanoveno Kvalita JPEGu 90 %Je to rychlý způsob, jak snížit váhu bez znatelného úbytku hmotnosti ve velké většině případů.

Můžete také použít pouze šířka nebo pouze výška (například -resize 1200x o -resize x800) aby ImageMagick automaticky upravil ostatní rozměr a zároveň zachoval proporce. Pokud použijete znak ! (například -resize 800x600!) vynutí přesně tyto rozměry, i když obraz bude zkreslený, pokud poměr stran neodpovídá.

V případě práce s Soubory GIMP XCF s více vrstvamiPokud převádíte přímo do PNG nebo JPG, bude pro každou vrstvu vygenerován samostatný soubor. Abyste tomu předešli a získali jeden sloučený obrázek, přidejte možnost -flatten před výstupním souborem.

Mogrify vs. Convert: Kdy použít který z nich

Velmi důležitým rozdílem při práci v dávkách je pochopení co přesně každý příkaz dělá:

  • konvertovat (nebo magicky konvertovat) Přečte vstupní obrázek, aplikuje transformace a vygeneruje nový výstupní souborPůvodní obrázek zůstává neporušený.
  • mogrify Otevřete soubor, aplikujte změny a pokud nepoužíváte -format o -path, přepíše původní souborTím se ušetří místo na disku, ale změny jsou nevratné, pokud nemáte zálohu.

Typické hovory bych:

convert imagenoriginal.png -parametro valor imagendestino.png
mogrify -parametro valor imagenoriginal.png

Např., pokud spustíte:

convert torres.jpg -negate torresnegadas.jpg

stále budeš mít dva různé souboryoriginál a negativ. Pokud to však uděláte:

mogrify -negate torres.jpg

souboru Soubor torres.jpg byl upraven A neexistuje žádná záloha, pokud jste si ji předem nevytvořili. Je to ideální pro čištění velkého množství obrázků, když máte obavy o místo, ale musíte být opatrní.

V obou případech Pořadí argumentů je důležité. S convert Nejprve zadáte zdrojový obrázek, poté parametry a nakonec cíl. Pokud prohodíte zdroj a cíl, nástroj selže, protože nenajde soubor, který má číst. mogrify Parametry se uvádějí před názvy souborů; pokud uvedete soubor jako první a poté parametry, nic se nepoužije.

Tvorba pláten a textů od nuly

Další klíčový rozdíl je v tom Pouze Convert dokáže vytvářet obrázky od nulyS modifikátorem xc: Můžete vygenerovat plátno s jednobarevným vzorem:

convert -size 500x250 xc:red imagenroja.jpg

Pokud se pokusíte udělat něco podobného s mogrify Bez předchozího souboru se to nezdaří, protože Není co upravovat.Totéž platí pro generování štítků nebo obrázků s textem přímo:

convert -size 500x250 -gravity Center -background blue -font FreeMono-Bold label:"Linux Center" cartela_Linux_Center.jpg

Tento příkaz vytvoří modré pozadí, vycentruje text, použije písmo a vygeneruje nový obrázek. mogrify potřeboval/a bys začínáme s existujícím souboremZ ničeho nic si ho nevymyslíš.

Dávkové zpracování pomocí Mogrify a shellových skriptů

Když máme ve složce stovky fotografií a chceme na ně použít stejná konverze automatickyDo hry vstupují shellové skripty a mogrify.

#!/bin/bash
mkdir -p convertidas
for img in *.jpeg; do
convert "$img" -resize 800x600 -quality 90 "convertidas/$img"
done

Tato mini-skriptová prohlídka všechny obrázky s příponou .jpeg V aktuální složce aplikujte změnu velikosti a výsledky ponechte v převedeno/Můžete jej upravit a změnit formát (například tak, aby výstup byl .png o .webp), přidejte vodoznaky nebo jakýkoli jiný filtr, který ImageMagick podporuje.

Pokud máte mnoho obrázků ve stejném formátu a chcete přepsat je na webu úspora místa, mogrify Svítí obzvlášť jasně. Typický příklad převodu z XCF do PNG, změny velikosti a odeslání výsledku do jiné složky by byl:

mogrify -resize 128x128 -format png -path "$HOME/imgs_convertidas" $HOME/imgs_originales/*.xcf

Mogrify pro hromadnou konverzi a standardní parametry

Objednávka mogrify Umožňuje vám zřetězit mnoho transformací najednou. Poměrně kompletní příklad pro převod všech PDF souborů ve složce do formátu JPG, změnu jejich velikosti, úpravu kvality a jejich otočení by vypadal takto:

mogrify -format jpg -density 300 -quality 80 -resize 1280x1024 -rotate -90 *.pdf

Některé z nejčastěji používaných parametrů V kontextu optimalizace a konverze se jedná o:

  • -formátvýstupní formát obrázku (jpg, png, webp atd.).
  • -hustota: rozlišení v dpi (150, 300, 600…), užitečné při převodu PDF nebo jiných vektorových formátů do bitmapového formátu.
  • KvalitníKvalita komprese pro ztrátové formáty (zejména JPEG a WebP). Pro web je obvykle dobrá rovnováha 80.
  • - velikost: konečné rozměry, s možností zadat pouze šířku, pouze výšku nebo obojí.
  • -střídat: rotace ve stupních (kladná ve směru hodinových ručiček, záporná proti směru hodinových ručiček).

Mějte na paměti, že v některých distribucích (například Ubuntu/Debian s ImageMagick 7) byly zavedeny bezpečnostní zásady, které ve výchozím nastavení zakazují určité citlivé formáty, například PDF. Pokud při použití mogrify Zobrazuje se vám chyba oprávnění k PDF souborům; soubor můžete upravovat. /etc/ImageMagick-7/policy.xml s oprávněními správce a změňte řádek:

Pokud při použití mogrify o PDF souborech, které vidíte chyba oprávnění, můžete soubor upravit /etc/ImageMagick-7/policy.xml s oprávněními správce a změňte řádek:

<policy domain="coder" rights="none" pattern="PDF" />

pro něco jako:

<policy domain="coder" rights="read | write" pattern="PDF" />

uvolnění bezpečnosti Měli byste zhodnotit, zda se vám to vyplatí, nebo ne; z pohledu puristy to otevírá malou mezeru, ale v mnoha kontrolovaných prostředích je to přijatelné.

Konverze a optimalizace do moderních formátů (WebP, optimalizovaný JPEG)

Kromě ImageMagicku existují specifické nástroje, které jsou velmi užitečné pro optimalizovat velikost bez ztráty příliš velké kvalityzvláště když je vaším cílem web.

Konverze na WebP pomocí cwebp a img2webp

WebP Jedná se o moderní formát vytvořený společností Google, který nabízí komprese lepší než JPEG a PNG V mnoha případech, a to jak se ztrátou, tak bez ztráty. Zisk cwebp Používá se k převodu existujících obrázků (JPEG, PNG…) do formátu WebP z příkazového řádku:

  • Převod JPEG do WebP s kvalitou 80:
    cwebp -q 80 input.jpg -o output.webp
  • Převod PNG do WebP se zachováním průhlednosti:
    cwebp -q 80 input.png -o output.webp

Pro dávkové zpracování (například všechny obrázky začínající na servbay), můžete v Shellu použít malou smyčku:

for file in servbay*.{jpg,png}; do
cwebp -q 45 "$file" -o "${file%.*}.webp"
done

Syntaxe ${soubor%.*} Jedná se o rozšíření parametrů shellu, které odstraní původní rozšíření a poté přidá .webp.

Pokud chcete vytvořit animovaný WebP (něco podobného animovanému GIFu, ale efektivnějšího), můžete čerpat z img2webp:

img2webp -loop 0 -d 100 frame1.png frame2.png frame3.png -o output.webp

Tento příklad kombinuje několik obrázků do jednoho animovaného souboru s Zpoždění 100 ms mezi snímky a nekonečnou smyčkou.

Bezztrátová optimalizace JPEGu pomocí jpegtran, djpeg a cjpeg

Pro JPEG existuje řada klasických nástrojů, které jsou velmi užitečné, když chcete... bezztrátová optimalizace nebo velmi jemné ovládání:

  • jpegtranOtáčí, převrací, mění pořadí a optimalizuje soubory JPEG bez opětovné komprese (bezeztrátové operace). Umožňuje také generovat progresivní soubory JPEG a odstraňovat nepotřebná metadata.
  • djpeg: dekóduje JPEG do nekomprimovaných meziformátů (například PPM), což je užitečné v nízkoúrovňových pracovních postupech.
  • cjpeg: provádí opačný proces, komprimuje nezpracované obrázky do formátu JPEG s různými parametry kvality.
Co jsou to AVIF obrázky?
Související článek:
AVIF: Vše o novém formátu obrázků, který přináší revoluci na webu

Typické použití jpegtran pro optimalizaci JPEGů bez ztráty a jejich progresivní provedení by bylo:

jpegtran -optimize -progressive -copy none input.jpg > output.jpg

Zde odstraňujeme metadata (EXIF, komentáře atd.), vylepšujeme vnitřní organizaci a převádíme do progresivního kódování, které obvykle poskytují lepší vnímání zátěže na webu, když je obrázek zobrazen ve „vrstvách“ detailů.

Dávkové zpracování obrazu s grafickým rozhraním: Converseen

Pokud terminál není vaše oblíbená věc, ale přesto chcete využít sílu ImageMagicku, existují nástroje jako Kontaktujte nás, který nabízí multiplatformní grafické rozhraní (Windows a Linux) pro správu hromadných konverzí.

Converseen je interně založen na knihovně ImageMagick a umožňuje jedním tahem:

  • Převod mezi formáty (JPG, PNG, TIF a mnoho dalších, jako například DPX, EXR, GIF, SVG, PhotoCD, PostScript…).
  • Změna velikosti, otáčení a převrácení dávkové obrázky.
  • Komprese obrázků pro web nebo u dokumentů kontrola kvality a velikosti.
  • Přejmenování skupin souborů s předponami, příponami nebo progresivními číslicemi.
  • Převod celého PDF do mnoha obrázkůjeden na stránku.

Snadno se instaluje z repozitářů mnoha distribucí (converseena v openSUSE converseen-lang (pro daný jazyk) nebo stažením spustitelné/přenosné verze ve Windows.

Rozhraní Converseenu je uspořádáno do několika panelů: akční panel (náhled, kóty, otočení a možnosti výstupu), centrální oblast, kde vidíte soubory ke zpracování, a spodní panel kde si vyberete výstupní formát, konkrétní preference (komprese JPG/PNG, barva pro průhledné pozadí atd.).

Mezi jeho nejpraktičtější funkce patří masivní a proslulýMůžete například vybrat „Změnit měřítko obrázku“, zachovat poměr stran, nastavit šířku nebo procento zmenšení a zvolit, zda chcete zachovat původní formát, nebo jej převést na jiný. Pro přejmenování máte několik možností. Předpona/Přípona (vložte řetězce kolem původního názvu) a Progresivní číslo (přidejte postupné číslování).

Také to umožňuje otočit obrázky o 90°, 180° nebo je převrátit vodorovně/svisle a má specifický pracovní postup pro převod PDF do sady obrázků: importujete PDF, vyberete stránky, které vás zajímají, zvolíte rozměry, formát, postupné přejmenování a v případě potřeby Průhledné pozadí nahradíte určitou barvou (například bílá).

Typické praktické případy s ImageMagick

Díky všemu výše uvedenému nyní můžete nastavit širokou škálu pracovních postupů. Některé běžné příklady Dávková optimalizace a konverze s ImageMagick bych:

  • Hromadná změna velikosti Pro blog nebo galerii: použijte bash skript, který iteruje všemi velkými fotografiemi, zmenší je na maximální šířku (např. 1200px) a uloží je do složky „web“.
  • Stahování obrázků z URL adresy, škálování a optimalizace v jednom příkazu:
    convert https://blogandweb.com/INPUT_IMAGE.jpg -resize 1200x -quality 60 -strip OUTPUT_IMAGE.jpg
  • Přidání log nebo vodoznaků automaticky použít všechny obrázky v kampani pomocí kombinací -gravity, -geometry y -composite v rámci smyčky.
  • odstranit hranice ze sady obrázků s -shave 10x10, ideální pro naskenované fotografie s nechtěnými rámečky.
  • Spojte několik obrázků do jedné montáže horizontální s +append, užitečné pro porovnání před/po nebo pro proužky snímků.
  • Generování animovaných GIFů ze sekvence JPG/PNG s -delay y -loop.

Veškerý tento potenciál lze zorganizovat z jiných jazyků, jako například PHP, Python nebo Node.js volání příkazů pomocí exec(), subprocess o child_processDíky tomu je integrace optimalizace obrázků do pracovního postupu nahrávání nebo backendového zpracování poměrně jednoduchá.

Jak obnovit chybějící fotografie z mobilní galerie
Související článek:
Jak obnovit chybějící fotografie z mobilní galerie: Kompletní průvodce

Mistr ImageMagick, mogrify a doplňkové nástroje jako cwebp nebo jpegtran Umožňuje vám s jistotou zvládat rozsáhlé knihovny obrázků, zkrátit dobu načítání webových stránek, ušetřit místo na disku a automatizovat úkoly, které by nebylo možné spravovat ručně. Jakmile si zvyknete na psaní tří nebo čtyř promyšlených příkazů nebo krátkého skriptu, změna velikosti, formátu a kvality tisíců fotografií přestane být otravou a stane se přirozenou součástí vašeho pracovního postupu. Sdílejte tyto informace a o nástroji se dozví více uživatelů..