2012-10-21 42 views
-1

我想讓水印在圖像下面去掉,所以圖像的整體高度應該擴大。定位水印php GD

這裏是我的代碼:

$img_width=imagesx($img); 
$img_height=imagesy($img); 
$watermark=imagecreatefrompng($watermark); 
$watermark_width=imagesx($watermark); 
$watermark_height=imagesy($watermark); 
$image=imagecreatetruecolor($watermark_width, $watermark_height); 
imagealphablending($image, false); 
$dest_x=$img_width-$watermark_width-5; 
$dest_y=$img_height-$watermark_height+1; 
imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); 
imagesavealpha($img, true); 

我試着用watermark_width和高度沒有運氣玩。 這甚至可能嗎?

+0

這是GD,不ImageMagick的 - 那麼您想要的輸出是在'(圖像寬度)×(圖像高度+ watermark-高度)'尺寸? – pozs

+0

水印的高度是30px ..圖像可以是不同的尺寸 – user1762941

+0

我只是問,你想水下的原始圖像*物理*,或者你想在下面作爲*圖層*? – pozs

回答

1
  1. 你需要創建一個尺寸的圖像:

    imagecreatetruecolor(max($img_width,$watermark_width), $img_height + $watermark_height + $margin);

  2. 然後,將圖像複製到(0,0)

  3. 最後,複製水印(0,$img_height + $margin)

$margin是空間圖像中的像素水印)之間&

編輯

$margin = 5; 
$img  = imagecreatefrompng($img_path); 
$watermark = imagecreatefrompng($watermark_path); 

$img_width = imagesx($img); 
$img_height = imagesy($img); 

$watermark_width = imagesx($watermark); 
$watermark_height = imagesy($watermark); 

$output_width = max($img_width, $watermark_width); 
$output_height = $img_height + $watermark_height + $margin; 

$output = imagecreatetruecolor($output_width, $output_height); 
imagesavealpha($output, true); 
imagealphablending($output, false); 
imagerectangle($output, 0, 0, $output_width, $output_height, imagecolorallocatealpha($output, 0, 0, 0, 127)); 

imagecopy($output, $img, 0, 0, 0, 0, $img_width, $img_height); 
imagecopy($output, $watermark, 0, $img_height + $margin, 0, 0, $watermark_width, $watermark_height); 

imagepng($output, $path_to_save); // use null to output 
imagedestroy($img); 
imagedestroy($output); 
imagedestroy($watermark); 
+0

我試過了,但它似乎沒有工作..我可能做錯了什麼..這聽起來太noobish ..但你可以發佈的代碼..沉悶請 – user1762941