Hromadné zmenšení velikosti fotek

Petr Wiedemann, 16. květen 2009

Pro dávkovou změnu velikosti fotek můžeme využít open source knihovny ImageMagick. Ke stažení je na adrese http://www.imagemagick.org/script/index.php. Součástí balíku je program convert, který umí převádět obrázky mezi velkým množstvím formátů, měnit jejich velikost, barevnou paletu nebo například vkládat text.

Pro změnu velikosti slouží parametr resize, za který lze uvést maximální rozměry výsledného obrázku. Například následující příkaz změní velikost obrázku foto1.jpg tak, že jeho šířka nebo výška bude maximálně 400 bodů a bude zachován poměr stran. Výsledný soubor bude uložen jako foto2.jpg.

convert -resize 400x400 foto1.jpg foto2.jpg

Hodnotu parametru resize je možné zapsat jako 400x, kdy bude výsledný obrázek široký 400 bodů. Naopak zápisem x400 docílíme pevné výšky obrázku 400 bodů. Oba zápisy zachovávají poměr stran. Všechny způsoby, jak lze zapsat výsledné rozměry najdete na http://www.imagemagick.org/script/command-line-processing.php#geometry.

Dávková změna rozměrů ve Windows

Pokud máme v adresáři spoustu fotek, které chceme zmenšit, můžeme si napsat krátkou dávku, která najde obrázky a uloží jejich zmenšené kopie. Nejprve musíme stáhnout balík programů. Pro Windows je k dispozici několik verzí. Osobně doporučuji ImageMagick-6.5.2-Q16-windows.zip (číslo verze se může lišit), která se nemusí instalovat a stačí obsah archívu pouze rozbalit do adresáře. Našim záměrem bude najít všechny soubory s příponou jpg v adresáři, jejich zmenšení na max. rozměr 400 bodů a uložení v barevné paletě RGB. Pokud by zdrojové obrázky byly uloženy v paletě CMYK a chtěli bychom je zobrazit na webu, mohli bychom narazit na neschopnost Internet Exploreru je zobrazit. Zároveň snížíme kvalitu výsledných fotek na 90%, aby soubory zabíraly méně místa. V textovém editoru (například Poznámkový blok nebo Notepad++) napište následující text a soubor uložte do adresáře s fotkami jako convert.cmd.

@for /r %%i in (*.jpg) do call :convert "%%~fi"
@goto :EOF

:convert
@d:\ImageMagick-6.5.2-4\convert.exe -strip -resize 400x400 -quality 90 -colorspace rgb "%~f1" "%~f1.converted.jpg"
@goto :EOF

Tento skript vyhledá v adresáři, kde je uložen a v jeho podadresářích všechny soubory s příponou jpg a uloží zmenšené kopie ke zdrojovým fotkám, ale za jejich název přidá text converted.jpg. Cestu k programu convert upravte podle místa, kam jste rozbalili ImageMagick.

Doplněno 23. července 2009
Volání programu convert z dávky v příkazovém řádku si neporadí se soubory nebo adresáři, které mají v názvu diakritiku. Jediný způsob jak výše uvedený postup použít, o kterém vím že funguje, je vyhození diakritiky z názvů souborů a adresářů.

Doplněno 13. srpna 2009
Pokud potřebujete hromadně změnit rozměry nebo formáty obrázků, které mají v názvu diakritiku, případně jen požadujete program s uživatelským rozhraním, přečtěte si článek mslgen - hromadná úprava obrázků programem conjure.