2009-08-02 12 views
1

Ich versuche, eine kleine PHP-Funktion zu schreiben, ein Bild zu machen und ein Wasserzeichen Typ Bild oben auf dem Bild und sie speichern sie als 1 Bild, dies Code läuft mit 0 Fehlern, aber wendet das Wasserzeichenbild nicht an, gibt es etwas offensichtliches, das herausstellt, warum es nicht?Wie kann ich ein Bild auf ein Bild in PHP wie ein Wasserzeichen hinzufügen

<?PHP 
$source_file_path ='http://cache2.mycrib.net/images/image_group92/0/43/653807d5727a46498180e8ef57fdf7819b2b0c.jpg'; 
$watermark_image='fpwatermark.gif'; // the watermark image 
$destination_image ='coooolgif.gif'; // where to save new file 

$imagesize = getimagesize($destination_image); 
$watermarksize = getimagesize($watermark_image); 
$watermark_x = $imagesize[0] - $watermarksize[0] - 2; 
$watermark_y = $imagesize[1] - $watermarksize[1] - 2; 

//run function 
watermark_img($watermark_image, $destination_image, $watermark_x, $watermark_y, $watermark_w, $watermarksize[0], $watermarksize[1], $source_file_path); 


function watermark_img($watermark_src, $image_src, $watermark_x, $watermark_y, $watermark_w,$watermark_h, $source_file_path) { 
    //Determine what type of image we're working with 
    list($width, $height, $type) = getimagesize($image_src); 
    $image_ext = $type; 
    switch (strtolower($image_ext)) { 
      #gif 
     case 1: 
      $image = imagecreatefromgif($image_src); 
      break; 
      #jpg 
     case 2: 
      $image = imagecreatefromjpeg($image_src); 
      imageAlphaBlending($image, true); 
      break; 
      #png 
     case 3: 
      $image = imagecreatefrompng($image_src); 
      imageAlphaBlending($image, true); 
      break; 
     default: 
      return false; 
    } 
    //Create an instance of the watermark in memory 
    if (!($watermark = imagecreatefromgif($watermark_src))) 
     return false; //Make sure your Watermark is a GIF 
    //Add watermark to the image 
    if (!(imagecopy($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w, 
     $watermark_h))) 
     return false; 
    //Resave the image with the watermark now in place 
    if (!(imagejpeg($image, $image_src))) 
     return false; 
    //Destroy instaces of images to free up RAM 
    imagedestroy($image); 
    imagedestroy($watermark); 
    //Apparently everything went well. 
    return $image_ext; 
} 
?> 

Antwort

5

Ich glaube, Sie brauchen, dies zu ändern (hier ist ein einfaches Tutorial http://www.cafewebmaster.com/image-watermark-php):

//Add watermark to the image 
if (!(imagecopy($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w, 
    $watermark_h))) 

mit:

//Add watermark to the image 
if (!(imagecopymerge($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w, 
    $watermark_h, 100))) 

oder verwenden wideImage;)

+0

Dank für die Links – JasonDavis

0

Hier ist eine Anleitung, wie man es von einem Wasserzeichen zu machen, ein transparentes PNG-Bild mit: http://www.sitepoint.com/article/watermark-images-php/

ich verwendet habe, dass vor und es funktioniert. Das Problem mit dem Code, den Sie haben, ist wahrscheinlich, dass Sie versuchen, ein JPEG zu generieren, aber die Dateierweiterung ist ein gif, also wird es nicht richtig dargestellt. Kann aber falsch liegen.

Wenn es nur ein endgültiges Bild nicht speichert, dann ist das nur ein Berechtigungsproblem mit dem Ordner. In diesem Fall müssen Sie den Ordner wahrscheinlich über chmod auf 777 setzen.

Verwandte Themen