12. 5. 2014

PHP spracovanie 2 - úpravy obrázkov

Pri dynamicky generovaných obrázkoch pre bežnú stránku sa hodí miesto nového generovania obrázku pre mobilnú stránku tento jednoducho zmenšiť priamo za pomoci PHP.

Úprava obrázkov za pomoci PHP knižníc je vhodná aj pre jednoduché jednorazové skripty spracúvajúce hromadne adresáre s obrázkami napríklad pre generovanie náhľadov (pre stránku fotogalérie), alebo konverziu.




Pre prácu s obrázkami sa v PHP najčastejšie používa knižnica GD.
Funkcie pracujú s obrázkami ako premennými. Funkciou sa vytvorí obrázok v premennej napríklad z reťazca stiahnutého z konkrétnej linky cez CURL knižnicu:

$large_image = imagecreatefromstring($curl_output);

Ak chceme z obrázka len časť vystrihnúť a prípadne zmenšiť, potrebujeme vytvoriť najskôr novú premennú s prázdnym zmenšeným obrázkom (x,y cieľová veľkosť):

$small_image = imagecreatetruecolor($x,$y);

Následne môžeme obrázok z jednej premennej vystrihnúť (va,vb,vx,vy) a zmenšiť do druhej (0,0,x,y):

imagecopyresampled($small_image,$large_image,0,0,$va,$vb,$x,$y,$vx,$vy);

Pôvodnú premennú už nepotrebujeme a preto môžeme uvolniť pamäť:

imagedestroy($large_image);

Vytvoríme zrotovanú podobu o 270 stupňov proti hodinovým ručičkám (90st. vpravo):

$rotated_image = imagerotate($small_image, 270, 0);
imagedestroy($small_image);

Skonvertujeme obrázok z true color (24bit farieb) na paletu s "c" počtom farieb (napríklad pre ručne kreslené obrázky, nevhodné pre fotky). Druhý parameter vypína / zapína dithering.

imagetruecolortopalette($rotated_image, false, $c);

Vygenerovaný obrázok uložíme na disk (na cestu kam ukazuje html stránka ktorú PHP skript generuje):

imagepng($rotated_image, './mg.png');
imagedestroy($rotated_image);



Pre prácu s hromadným spracovaním fotiek na disku je potrebné skombinovať s cyklom prechádzajúcim adresár.

Žiadne komentáre:

Zverejnenie komentára