2009-08-02 64 views
1

我正在嘗試編寫一個小型php函數來拍攝圖像並在圖像上應用水印類型圖像並將它們另存爲1圖像代碼運行時出現0錯誤,但不會應用水印圖像,是否有任何明顯的跡象表明它爲什麼不會?如何將圖像添加到PHP中的圖像上(如水印)

<?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; 
} 
?> 

回答

5

我認爲你需要改變這個(這裏是一個簡單的教程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))) 

有:

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

或使用wideImage;)

+0

感謝鏈接 – JasonDavis 2009-08-02 05:46:47

0

下面是關於如何從水印使用透明的PNG圖像使其教程:http://www.sitepoint.com/article/watermark-images-php/

我已經使用之前,它的工作原理。你有代碼的問題可能是你想要生成一個JPEG,但文件擴展名是一個GIF,所以它不能正確渲染。可能是錯誤的。

如果只是不保存最終圖像,那只是文件夾的權限問題。在這種情況下,您很可能必須通過chmod將文件夾設置爲777。