Ořez obrázků pomocí JavaScriptu a PHP
18.06.2005 17:26Základní informace
Během dnešního dne jsem zkompletoval poměrně jednoduchý JavaScript, pomocí kterého je možné vytvářet výřezy z obrázků.
Nejlepší využití tohoto skriptu je např. v administračním rozhraní při ořezávání obrázků nebo na webu, na kterém uživatelé pracují s obrázky.
Sám o sobě JavaScript fotku nevyřízne, k tomu potřebujete nějaký skriptovací (nebo programovací) jazyk jako je např. Python, PHP nebo ASP kterým zpracuje souřadnice předané “ořezávátkem".
Jak skript pracuje?
Skript je napsán pomocí jednoduchého objektového modelu, takže jeho začlenění do stránky je snadné a lze provést během několika okamžiků:
1. Prolinkování na externí javascript:
<script type="text/javascript" src="js/imageCropper.js"></script>
2. Určení formuláře
Aby mohl vůbec skript fungovat, tak musí být ve stránce formulář, do kterého se dynamicky vytvoří následující hidden proměnné:
- crop[imgId][n][x1]
- crop[imgId][n][y1]
- crop[imgId][n][x2]
- crop[imgId][n][y2]
- crop[imgId][n][w]
- crop[imgId][n][h]
Kde imgId je parametr ID ořezávaného obrázku, n je číslo ořezávacího rámečku (0-n).
Proměnné x1, y1, x2, y2 nesou informace o začátku a konci ořezávacího rámečku v pixelech.
Proměnné w a h nesou informaci o cílové velikosti obrázku.
To provedeme zavoláním metody “useForm" s parametrem nesoucí název formuláře:
<script type="text/javascript">
imageCropper.useForm('cropForm');
</script>
3. Určení samotného obrázku pro ořez a stanovení parametrů
Posledním krokem za volaní metody “addCroper“, která akceptuje následující parametry:
-
ID:
ID obrázku, na kterém se má ořezávátko vytvořit -
width:
výchozí šířka ořezávátka -
height:
výchozí výška ořezávátka -
ratio
určuje, zda zvětšování / zmenšování bude probíbat se zachováním poměru stran.
nepovinná, akceptuje hodnotu “fixed" nebo null. -
bColor
určuje barvu rámečku pro ořez.
nepovinná, akceptuje hodnoty barev HEXa (např. 0f0) nebo null.
Parametr ratio s hodnotou “fixed" znamená, že zvětšování rámečku bude probíhat se zachováním poměru stran a proměnné crop[imgId][n][w] a crop[imgId][n][h] budou obsahovat zadané hodnoty proměnných width a height.
Pokud během zvětšování zmáčknete klávesu shift, pak se bude zachovávat poměr stran.
Tuto metodu lze zavolat N-krát, což znamená, že na jednom obrázku je možné zároveň pracovat s několika rámečky. Stejně tak je možné přidávat ořezávátko na více obrázků na jedné stránce, ale každý obrázek musí mít unikátní ID.
<script type="text/javascript">
imageCropper.addCroper('obrazek',100,300,null,'0f0');
imageCropper.addCroper('obrazek',240,160,'fixed');
</script>
Kompatibilita prohlížečů
Tento skript funguje v IE5.x, IE6, Mozilla, Firefox. V Opeře 8.x trošku zlobí, ale je zcela funkční. Další prohlížeče jsem netestoval.
Příklad
Na adrese www.chose.cz/priklady/orez-obrazku/ si můžete prohlédnout příklad použití. Pokud vám nebude cokoliv jasné, ptejte se v diskusi.
18.06.2005 | Rubrika: JavaScript | Trvalý odkaz | 43 komentářů »
