Watermark

  • Creatore Discussione Creatore Discussione grifis78
  • Data di inizio Data di inizio

grifis78

Nuovo Utente
4 Giu 2008
3
0
0
Ciao a tutti!

Sto usando il seguente codice per creare watermark (prelevato proprio qui da voi) e funziona perfettamente... ma solo sul mio server LOCALE!! Appena metto il tutto sul mio server remoto (Ar*ba su, ahimè, hosting windows) non visualizza l'immagine! Ho pensato fosse un problema di permessi, ma ho provato il tutto nella cartella 'public' e niente... chi mi aiuta?? Il codice è questo:

PHP:
<?php
//indichiamo l'immagine che dovrà essere firmata e
//il watermark che utilizzeremo per la firma
$img_sorgente = 'sorgente.gif';
$sorgente_wtmk = 'logofoto.png';

//ricaviamo il type dell'immagine sorgente e del watermark
$img_tipo = @substr($img_sorgente,@strlen($img_sorgente)-4,4);
$img_tipo = @strtolower($img_tipo);
$wtmk_tipo = @substr($sorgente_wtmk,@strlen($sorgente_wtmk)-4,4);
$wtmk_tipo = @strtolower($wtmk_tipo);

//richiamiamo diverse funzioni a seconda del tipo di immagine
if($img_tipo == ".gif")
{ 
  $img_result = @imagecreatefromgif($img_sorgente);
}
elseif($img_tipo == ".jpg" || $img_tipo == "jpeg")
{ 
  $img_result = @imagecreatefromjpeg($img_sorgente);
}
elseif($img_tipo == ".png")
{ 
  $img_result = @imagecreatefrompng($img_sorgente);
}else{
  die("Impossibile rilevare il formato dell'immagine"); 
} 

if(!$img_result)
{
  die("Impossibile creare l'immagine");
}

//facciamo lo stesso per quanto riguarda il watermark
if($wtmk_tipo == ".gif")
{
  $wtmk = @imagecreatefromgif($sorgente_wtmk);
}
elseif($wtmk_tipo == ".png")
{
  $wtmk = @imagecreatefrompng($sorgente_wtmk);
}else{
  die("Impossibile rilevare il formato del watermark");
}

if(!$wtmk) die("Impossibile creare il watermark");

//stabiliamo le dimensioni dell'output
$img_result_width = @imagesx($img_result);
$img_result_height = @imagesy($img_result); 
$wtmk_width = @imagesx($wtmk);
$wtmk_height = @imagesy($wtmk);
$width = (($img_result_width - $wtmk_width)/1);
$height = (($img_result_height - $wtmk_height)/1.2);

//creiamo un immagine che comprenda il sorgente modificato e il suo watermark 
@imagecopy(
$img_result, 
$wtmk, 
$width, $height, 
0,
0,
$wtmk_width,
$wtmk_height
);

//visualizzazione dell'output
@header("Content-type: image/".@str_replace(".","",$wtmk_tipo));
@imagejpeg($img_result);
@imagedestroy($img_result);
@imagedestroy($wtmk);
?>
 
Le funzioni utilizzate per la manipolazione delle immagini dipendono da GD Library, quindi prima di andare avanti è necessario verificare la presenza di questa estensione di PHP. In più, come riportato da manuale PHP:
GIF support was removed from the GD library in Version 1.6, and added back in Version 2.0.28. This function is not available between these versions.

Intanto puoi controllare questo.
 
Innanzitutto, grazie Trogo. Come faccio a vedere che tali libreirie sono presente sul mio server di hosting?
 
Ho scritto sul loro forum per accertarmi che su hosting linux tali librerie le ritrovo, ma non rispondono. Tu sei sicuro che su hosting linux risolvo?
 
In ogni caso per verificare la presenza delle librerie, puoi fare una pagina php così:

PHP:
<?php
phpinfo();
?>

Che da in output tutta una serie di info utili sulla configurazione del php e sue estensioni (come la GD Library).