Layer 06

Watermark in php, come fare

Disponiamo di 2 immagini:
– l’immagine originale
– immagine watermark che andrà sovrapposta per semplicità visualizzo l’immagine direttamente da PHP settando l’header come image/jpeg

header(‘content-type: image/jpeg’);


A questo punto il browser è pronto per visualizzare un’immagine. Supponiamo di voler mettere il watermark in basso a destra distante dal bordo di 5 pixel.
Dobbiamo quindi calcolare le dimensioni del watermark e quelle dell’immagine orginale.

$watermark = imagecreatefrompng(‘watermark.png’); $watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);


A questo punto troviamo le dimensioni dell’immagine originale:

$image = imagecreatefromjpeg($origImg);
$size = getimagesize($origImg]);


dove $origImg è il percorso completo del file più il nome del file completo di estensione.
$size adesso è un vettore di 2 righe dove la riga 0 è la larghezza e la riga 1 è l’altezza. Decidiamo la destinazione dell’imaggine watermark all’interno di quella originale.

$dest_x = $size[0] – $watermark_width – 5;
$dest_y = $size[1] – $watermark_height – 5;


Adesso è giunto il momento fatale, dobbiamo mettere un’immagine sopra l’altra alle coordinate decise prima, php e le CD library ci aiutano parecchio con la funzione imagecopymerge().

imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);


Possiamo finalmente visualizzare l’immagine nel browser e per una questione di pulizia, possiamo deallocare la RAM occupata dalle immagini create:

imagejpeg($image); //Visualizza l’immagine
imagedestroy($image);
imagedestroy($watermark);

non c’è bisogno d’altro, a parte un po’ di praticità con le GD Library, per inciso consiglio di avere sempre installato la versione 2 delle GD perchè la versione 1 fa veramente schifo in quanto a qualità fotografica. le funzioni utilizzate:
imagecreatefrompng();
imagesx();
imagesy();
imagecreatefromjpeg();
getimagesize();
imagecopymerge();
imagejpeg();
imagedestroy(); buona lettura!]]>

Nessun commento “Watermark in php, come fare”