Watermark in php, come fare


Il problema maggiore della distribuzione di foto su internet è la copia delle foto per un successivo riutilizzo. A me non piace per niente chi con arroganza blocca il tasto destro del mouse, sicchè trovo il watermark (tradotto letteralmente filigrana) una cosa più carina e più delicata (a volte).

Il problema è il seguente

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!

Watermark in php, come fare ultima modifica: 2006-06-26T00:00:00+00:00 da Enrico

Related Posts

2 Comments.

  1. Urca,
    queste librerie sono veramente un portento!
    Bravo enrico!

  2. eh ma io non ho fatto niente…
    fanno tutto le librerie.

    cmq ci sono un po’ di problemi con le trasparenze e quant’altro.