定位水印php GD

时间:2012-10-21 11:12:28

标签: 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和height没有运气。 这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

  1. 您需要创建尺寸为

    的图像

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

  2. 然后,将图像复制到(0,0)

  3. 最后,将水印复制到(0,$img_height + $margin)
  4. $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);