Watermark al volo in PHP

Ecco un semplice codice per aggiungere al volo un watermark alle immagini utilizzando PHP e le librerie GD, l'utilizzo è semplicissimo, basta inserire il seguente codice in un file watermark.php
<?php
$source = $_GET['img'];
$watermark_file = "wm.png";

$image = imagecreatefromjpeg($source);
$source_w = imagesx($image);
$source_h = imagesy($image);

$watermark = imagecreatefrompng($watermark_file);
$watermark_w = imagesx($watermark);
$watermark_h = imagesy($watermark);

$dest_x = $source_w - $watermark_w - 5;
$dest_y = $source_h - $watermark_h - 5;

imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_w, $watermark_h);

header('Content-type: image/jpeg');
imagejpeg($image);
?>

Successivamente basterà richiamare il file in questo modo
<img src="watermark.php?img=immagine.jpg" />

Commenti

1. Andrea (29.12.10 15:40)
GD quindi è abilitato, non so prova ad inserire error_reporting(E_ALL); all'inizio dello script, qualche errore dovrà pur darlo, è uno script talmente semplice che non capisco dove possa creare problemi
2. Giorda (29.12.10 14:21)
giusto per chiarezza, ho messo i file watermerk.php, wm.png e le immagini tutte nella stessa cartella
3. Giorda (29.12.10 14:10)
ecco il risultato del dump:

array
'GD Version' => string 'bundled (2.0.34 compatible)' (length=27)
'FreeType Support' => boolean true
'FreeType Linkage' => string 'with freetype' (length=13)
'T1Lib Support' => boolean false
'GIF Read Support' => boolean true
'GIF Create Support' => boolean true
'JPEG Support' => boolean true
'PNG Support' => boolean true
'WBMP Support' => boolean true
'XPM Support' => boolean false
'XBM Support' => boolean true
'JIS-mapped Japanese Font Support' => boolean false
4. Andrea (29.12.10 13:20)
Prova ad inserire questo codice in un file pulito

var_dump(gd_info());
5. Giorda (29.12.10 11:41)
credo di si, da quello che so la libreria gd è inclusa in php dalla versione 4.3 in poi, nel server ho la 5 e in locale ho easyphp ultima versione, in caso come faccio a verificare?
6. Andrea (28.12.10 17:00)
Ciao Giorda, sei sicuro di avere le librerie GD installate sul server?
7. Giorda (28.12.10 16:10)
ciao, ho provato questo script ma a me non funziona niente... in output ho messo questo tutto come in queso script, ho messo l'output tutto giusto e i file watermark.php e wm.png nella stessa cartella delle immagini, ma non apre niente, addirittura in locale con easyphp mi da errore dell'applicazione apache e mi chiude tutto, mentre in remoto non si vede nulla, come mai?

8. Andrea (21.04.10 18:12)
Ho già risposto, credo anche in maniera esaustiva, funziona anche con file remoti, php deve però avere il parametro "allow_url_open" attivato
9. Evan (21.04.10 17:30)
Quoto la domanda di hysterik del 23.03.10!
10. Andrea (24.03.10 00:06)
Funziona anche se le immagini sono su un altro server, php deve avere "allow_url_fopen" abilitato però
11. hysterik (23.03.10 23:36)
questo script è a dir poco perfetto ma se il file watermark.php si trova da una parte e le immagini da tutt altra parte non funzia..come posso fare in modo da usare un unico file watermark,php? ho provato a modificare il percorso :



in:



ma non mi funziona :(
12. Vathel (13.03.09 12:19)
Grande!!!
Grazie ;)
Nome:
Commento:

Non si tratta di Spam / This is not Spam