PHP rozšíření umožňující pokročilou manipulaci s obrázky, vytváření jejich miniatur a verzí.
php composer.phar require pavlista/palette
Třída má pouze jeden povinný parametr a to instanci třídy, která implementuje interface Palette\Generator\IPictureGenerator v Palette je již připravená implementace a to třída Palette\Generator\Server.
Argumenty Palette\Generator\Server jsou:
Vytvoření instance Palette by tedy mělo vypadat takto:
$generator = new Palette\Generator\Server( 'files/thumbs', // storagePath 'http://www.example.com/files/thumbs/', // storageUrl '/var/www/example.com/' // basePath ); $palette = new Palette\Service($generator);
V umístění, které jsme si zvolily jako úložiště vygenerovaných variant (storagePath) je nutné vytvořit soubor palette-server.php (jméno může být libovolné), v kterém na instanci služby Palette (Palette\Service) zavoláme metodu serverResponse.
Kód souboru by měl vypadat například takto:
<?php // !!! Zde je nutné implementovat získání již nakonfigurované instance služby Palette. // Popřípadě ji vytvořit se stejným nastavením znovu. V tom případě ale pozor na zadávané cesty. $palette->serverResponse();
V umístění, které jsme si zvolily jako úložiště nastavíme přesměrování všech neexistujících souborů a adresářů na vytvořený soubor s backendem.
Do složky úložiště přidáme následující soubor .httacess:
#<IfModule mod_rewrite.c> RewriteEngine on #RewriteBase / RewriteCond %{ REQUEST_FILENAME} !-f RewriteCond %{ REQUEST_FILENAME} !-d RewriteRule ^.*$ palette-server.php [PT,L] #</IfModule>
Do sekce nastavení aktuálního serveru přidáme sekci:
location /files/thumbs/ { try_files $uri $uri/ /files/thumbs/palette-server.php$is_args$args; }
Varianty obrázku se tvoří ze zdrojového obrázku pomocí zápisu image query. Pomocí image query se určuje které všechny effekty a transformace chceme na obrázek použít a v jakém pořadí to má být.
1) Image query začíná relativní nebo absolutní cestou k souboru zdrojového
obrázku, po ní následuje znak @
.
Tato část image query nemusí být zadána, pokud již máme nějakým způsobem nastavené z kterého
obrázku chceme vytvářet variantu.
Příklad: files/obrazek.png@
2) Po té následuje výčet filtrů které chceme na obrázek aplikovat. Jednotlivé
filtry se oddělují znakem &
nebo |
Příklad: files/obraze.png@Resize;100;200&Grayscale
Přehled jednotlivých filtrů s popisem a příklady je k nalezení zde.
3) Některé filtry používají parametry, pomocí kterých se nastavují další
vlastnosti filtru.
Tyto parametry oddělují pomocí středníku ;
.
Příklad:
files/obrazek.png@Resize;150&Grayscale&Contrast;-50
4) U některých parametrů filrů které jsou nepovinné, nebo mají defaultní hodnotu lze jejich vyplnění v query přeskočit pomocí střeníku.
Příklad: files/obrazek.png@Resize;150;;crop
/** * @var $palette Palette\Service */ echo $palette->getUrl('image.png', 'Resize;150;120'); echo $palette->getUrl('image.png@Resize;150;120'); echo $palette('image.png', 'Resize;150;120'); echo $palette('image.png@Resize;150;120');Zápis složitějšího příkazu v image query:
/** * @var $palette Palette\Service */ echo $palette->getUrl('image.png', 'Resize;150;120'); echo $palette->getUrl('image.png@Resize;150;120'); echo $palette('image.png', 'Resize;150;120'); echo $palette('image.png@Resize;150;120');Příklad zobrazení miniatury v základním PHP a HTML:
<img src='<?=$palette('image.png@Resize;150;120')?>' alt='Resized image' />