-1

我希望水印在图像下方,因此图像的整体高度应该扩大。

这是我的代码:

$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 没有运气。这甚至可能吗?

4

1 回答 1

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);
于 2012-10-21T12:00:09.407 回答