Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Tipy a Triky
SIPS - Terminál není jen pro nadšence UNIXu
8. července 2005, 00.00 | Článek o tom, že i webdesigner nebo člověk z DTP může používat příkazovou řádku.
V posledních několika měsících jsem strávil v naší diskusní skupině #mujmac poměrně dost času. Pokud jste se ještě nikdy nezkusili připojit, rozhodně to udělejte - samozřejmě, někdy jsou slabší dny, ale občas jsme si schopni docela vystačit :)
Sem tam někdo přijde s dotazem, který se poměrně složitě řeší pomocí grafického rozhraní a přitom je naprosto jednoduché ho vyřešit z příkazové řádky. Jenže já získal pocit, že někteří toto řešení jednoduše zavrhují, jakoby bylo slovo Terminál neslušné.
Následující text je o tom, jak lze Terminál a příkazovou řádku použít i v případě, že nejsem zrovna systémový administrátor nebo správce sítě. Místo planého popisování postupu na sucho mám reálný příklad z mé práce - kolegyně z obchodního oddělení připravují podklady pro naše webové stránky... Máme ne zcela složitý systém založený na PHP a MySQL, který už dnes používá kdejaká firma - to znamená webové stránky s dynamickým obsahem, který je uložen v databázi. Ti, kteří vkládají data se nestarají o to, jak se budou zobrazovat, naopak, jejich úkolem je zadávat texty bez atributů a obrázky ve správně velikosti. A to druhé je právě kámen úrazu - představte si počítač v obchodním oddělení - u nás jsou to Windows XP (bohužel) a Money S3 (taky bohužel). Je poměrně jednoduché vysvětlit, jakým způsobem zadávat do systému nové produkty - děje se tak přes standardní browser na Windows - Internet Explorer, ale jak to udělat s obrázky? Zatím se mi nepodařilo postoupit dál než k tomu, že zdrojové soubory nesmí obsahovat speciální znaky a češtinu, ale to, aby měly správné rozlišení a pro rozměry, to jsem vzdal... Řešíme to tedy tak, že kolegyně ukládají obrázky do jednoho adresáře na serveru a já je hromadně upravuji.
Představme si, že máme ve složce 100 obrázků z různých zdrojů, v různých formátech (GIF, JPEG, PNG, PSD) a v různých velikostech. Prostě obvyklá situace. A co má být výsledek? Všechny obrázky jako png ve velikosti, která žádným rozměrem nepřekročí 110 pixelů.
Jak na to? Protože jsem člověk z grafického prostředí, první úvaha je samozřejmě Adobe Photoshop. No vlastně Adobe Image Ready, protože budeme publikovat na web, ale já stejně vždy na všechno používám Photoshop. Jenže tady je problém číslo jedna - Adobe Photoshop stojí peníze a to docela dost. Ale dejme tomu, že jeho licenci vlastním. Přestože jsem z grafického prostředí, poslední verzi, kterou jsem používal při své práci, byla verze 5. Teď máme CS2 a přestože se GUI skoro nemění, občas provedou vývojáři nějakou optimalizaci, která úplně změní zažité postupy. Pochybuji, že bych bez bližší znalosti poslední verze nastavil Action, která bude dělat to, co chci dříve, než za 15 minut. Navíc, nejsem si jist, že bych dokázal udělat nastvení tak, aby žádný z rozměrů nepřesáhl 110 pixelů.
Druhá varianta, která mne napadla, byla Macromedia (Adobe) FireWorks. Je to na tvorbu obrázků web podle mne nejlepší software, ovšem nejsem si jist, že umí pracovat se skupinou obrázků, tuhle funkci jsem od něj nikdy nechtěl, tak ani nevím, jestli tam je.
Třetí variantou by byl software, shareware, Graphic Converter. Ten určitě umí pracovat s mnoha formáty, má podporu pro práci se skupinou obrázků, ale také se nedomnívám, že by uměl měnit velikost podle většího rozměru.
A co zbývá? Ještě jsem nevysvětlil, co je ten sips. SIPS je scriptable image processing systém a je standardní součástí instalace Mac OS X od verze 10.3 Pokud někdo z vás používá AppleScript, a využil někdy tzv. Image Events, pak využíval právě SIPS. Pro jednoduchost - jde o nástroj určený k podávání informací nebo úpravě obrázků a ICC profilů.
Jak tedy lze vyřešit můj problém se sto obrázky? Jedním příkazem:cd _cesta ke složce_ sips --resampleHeightWidthMax 110 -s format png *Dejte pozor, původní soubory se takto přepíšou, pokud chcete raději zachovat původní soubory a vytvořit upravené nově, byl by příkaz asi takhle:
sips --resampleHeightWidthMax 110 -s format png * --out nejaka_slozka
Všimli jste si, jak to bylo rychlé? Na mém PowerBooku 1.25GHz, jsem zmenšil obrázek 33,6MB v tiffu na 110 pixelů v png za 1.16 sekundy! Pokud si chcete podobné měření pro zajímavost zkusit sami, stačí, kdy před příkaz ještě napíšete time.
Tohle byl jednoduchý způsob, jak předvést, že i příkazová řádka může mít smysl pro DéTéPáky a webové grafiky. SIPS umí crop, přidat/odebrat profil, měnit formáty souborů, získávat informace o obrázcích:
sips -g all /Users/rcerny/temp/ICG.tif /Users/rcerny/temp/ICG.tif pixelWidth: 2973 pixelHeight: 3593 typeIdentifier: public.tiff format: tiff formatOptions: default dpiWidth: 300.000 dpiHeight: 300.000 samplesPerPixel: 3 bitsPerSample: 8 hasAlpha: no space: RGB profile: Photocal profile 19.12.2002
Obsah seriálu (více o seriálu):
- Obcování s ďáblem
- Obcování s ďáblem 2 - základy
- Obcování s ďáblem 3 - Práce se soubory
- Obcování s ďáblem 4 - Další práce se soubory
- Obcování s ďáblem 5 - Stále soubory, hlavně linky
- Obcování s ďáblem 6: Pár zbývajících drobností
- Obcování s ďáblem 7: Samá voda, přihořívá, hoří!
- Obcování s ďáblem 8: Jak se do shellu volá, tak se program ozývá
- Obcování s ďáblem 9: Nové finty na programy
- Obcování s ďáblem 10: Do fronty, pánové, do fronty!
- Obcování s ďáblem 11: Standardní vstup a výstup
- Obcování s ďáblem 13: Další triky
- Obcování s ďáblem 14: Vyšší škola hledání souborů
- Obcování s ďáblem 15: Příkaz find stokrát jinak
- Obcování s ďáblem 16: Co se ještě dá uvařit z příkazu find
- Obcování s ďáblem 17: Regulární výrazy
- Obcování s ďáblem 18: Speciální regulární výrazy
- Obcování s ďáblem 19: Skládání regulárních výrazů
- Obcování s ďáblem 20: Regulární výrazy se zpětnými odkazy
- Obcování s ďáblem 21:K čemu je dobrý grep...
- Zázraky ihned, nemožné na počkání: sed
- Obcování s ďáblem - další finty s příkazem sed
- Rozsáhlejší příklad se sedem
- Obcování s ďáblem: Další kouzla, aneb awk
- Awk a proměnné
- Obcování s ďáblem 27: Awk a výrazy
- Obcování s ďáblem: Awk a funkce
- Awk a příkazy
- Co je to vlastně "uživatel"?
- Vlastnictví objektů
- Přístupová práva
- Vlastník, skupina, ostatní...
- Jak je to se skupinami?
- Skupiny a uživatelé
- Scripty
- Komentáře, a volba shellu
- Pro skript může být shell cokoli!
- Shellové skripty a argumenty
- Skripty a proměnné: aritmetika
- Proměnné shellu, "dědění" hodnot
- Práce s proměnnými
- Práce se jmény souborů
- Pole hodnot
- Další triky kolem polí...
- Standardní proměnné shellu
- Základní příkazy pro skripty
- Příkaz if
- Speciální podmínkové příkazy
- Podmínky pro práci se soubory
- Jednoduchý cyklus
- Příkaz for a pomocné příkazy break a continue
- Příkaz case
- Příkazy exit a select
- Rejstřík a přehled
- Procesy
- Informace o procesech
- Další klíčová slova pro příkaz ps
- Příkaz ps: několik praktických přepínačů
- A k čemu že je "ps" dobré?
- Copak procesor, s pamětí je to horší
- Virtuální paměť
- A ještě jednou virtuální paměť
- Zpět k příkazu ps
- Skutečný žrout paměti
- Ještě jednou top
- Doplněk k topu: vm_stat
- Co to tedy všechno znamená?
- Nevychází nám dal a má dáti?
- Kam se stránky ukládají?
- Změna odkládacího disku
- Změna odkládacího disku / fstab
- Poslední poznámka k fstab
- A jak to je se soubory?
- Co vlastně příkaz lsof vypisuje?
- Příkaz lsof a obsah sloupce NAME
- SIPS - Terminál není jen pro nadšence UNIXu
- Tak nám zabili NetInfo, paní Müllerová