我希望水印低于图像,因此图像的整体高度应该会扩大。
这是我的代码:
$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没有运气。 这甚至可能吗?
答案 0 :(得分:1)
您需要创建尺寸为
的图像 imagecreatetruecolor(max($img_width,$watermark_width), $img_height + $watermark_height + $margin);
然后,将图像复制到(0,0)
(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);