2009-08-02 8 views
1

小さなPHP関数を使って画像を撮影し、画像の上にウォーターマークタイプの画像を適用しようとしています。コードは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; 
} 
?> 

答えて

0

ここで透過PNG画像を使用して、透かしから、それを作成する方法についてのチュートリアルです:http://www.sitepoint.com/article/watermark-images-php/

私はその前に使ってきたし、それが動作します。あなたが持っているコードの問題は、おそらくあなたがjpegを生成しようとしているのですが、ファイル拡張子はgifなので、正しく表示されません。しかし、間違っている可能性があります。

最終的な画像を保存していないだけの場合は、そのフォルダのアクセス権の問題です。この場合、chmodを使用してフォルダを777に設定する必要があります。

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

:私はあなたがこれを変更する必要があると思う

関連する問題