Php 定位水印

Php 定位水印,php,gd,Php,Gd,我希望水印位于图像下方,因此图像的整体高度应该扩大 这是我的密码: $img_width=imagesx($img); $img_height=imagesy($img); $watermark=imagecreatefrompng($watermark); $watermark_width=imagesx($watermark); $watermark_height=imagesy($watermark); $image=imagecreatetruecolor($watermar

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

这是我的密码:

$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);
我试着玩水印的宽度和高度没有运气。 这可能吗

  • 您需要创建具有尺寸的图像:

    imagecreatetruecolor(最大($img\u-width,$watermark\u-width),$img\u-height+$watermark\u-height+$margin)

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

  • 最后,将水印复制到
    (0,$img\u 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);
    

    这是GD,不是imagemagick-因此您希望输出为
    (图像宽度)x(图像高度+水印高度)
    尺寸?水印高度为30px。。图像可以是不同的尺寸,我只是问,你想要水印在物理上低于原始图像,或者你想要作为一个层在物理上低于原始图像。。我用css隐藏水印。。因此,只有当图像嵌入或打开新标签/下载等时,它才会显示。你知道,图像下面的水印毫无用处。一个屏幕截图,一个简单的裁剪,你删除它就像下载它一样简单。在你的图像底部加一个透明度为90%的水印应该不会更好?我试过了,但似乎不起作用。我可能做错了什么。这听起来太没意思了。但是你能发布代码吗?很好