2011-03-09 3 views
2

J'ai un problème en écrivant un filigrane transparent dans une image Gif en PHP. Il écrit mais ne montre pas la transparence. J'ai une image qui a une table avec des informations que je dois marquer de l'eau dans ce fichier de sorte que les données montrées sur le dossier ne devraient pas être déranger. Moyens, le filigrane doit être transparent et visible. S'il vous plaît aidez-moi. Le code est quelque chose comme ça.Je ne parviens pas à filigrane d'un fichier GIF avec alpha en php. Est-il possible d'afficher la chaîne transparente dans le fichier GIF?

    $imagesource="pics/2011/temp/15_03.gif"; 
        $DestinationFile="pics/2011/15_03.gif"; 
     $filetype = substr($imagesource,strlen($imagesource)-4,4); 
     $filetype = strtolower($filetype); 
     if($filetype == ".gif") $image = @imagecreatefromgif($imagesource); 
     if($filetype == ".jpg") $image = @imagecreatefromjpeg($imagesource); 
     if($filetype == ".png") $image = @imagecreatefrompng($imagesource); 
     if (!$image) die();   
     $imagewidth = imagesx($image); 
     $imageheight = imagesy($image);   
     $startwidth = (($imagewidth *20)/100); 
     $startheight = $imageheight - ($imageheight*20)/100; 
     //imagecopy($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight); 
     $color = imagecolorallocatealpha($image, 0, 111, 0,75); 
     imagettftext($image,24,60,$startwidth,$startheight,$color,'arial.ttf',"(c)www.Example.com"); 
     imagejpeg($image,$DestinationFile,85); 
     imagedestroy($image); 
+0

GIF ne prend pas en charge la transparence alpha. – BoltClock

+1

Comment quelque chose peut-il être à la fois transparent et visible? – Gabe

Répondre

0

Peut-être que vous devez créer le filigrane sur une autre image et utiliser la fonction de fusion:

$watermark = @imagecreatetruecolor(120, 20); 
$color = imagecolorallocate($image, 0, 111, 0); 
imagettftext($watermark ,24,60,$startwidth,$startheight,$color,'arial.ttf',"(c)www.Example.com"); 
$image = imagecreatefromjpeg('image.jpg'); 

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

Merci louskan ..! –

+0

@Gabe: Je veux dire semi-transparent. –