PHP 如何给图片右下角加水印?

How to add watermark to an image at the bottom right in PHP?

我正在尝试为 PHP 中的图像添加水印。我正在使用下面的代码,效果很好。但是我面临着以下几个方面的挑战。

<?php

 function watermark_image($target, $wtrmrk_file, $newcopy) {
    $watermark = imagecreatefrompng($wtrmrk_file);
    imagealphablending($watermark, false);
    imagesavealpha($watermark, true);
    $img = imagecreatefromjpeg($target);
    $img_w = imagesx($img);
    $img_h = imagesy($img);
    $wtrmrk_w = imagesx($watermark);
    $wtrmrk_h = imagesy($watermark);
    imagecopy($img, $watermark, 500, 200, 0, 0, 100, 100);
    imagejpeg($img, $newcopy, 100);
    imagedestroy($img);
    imagedestroy($watermark);
}

watermark_image('1.jpg','assets/images/watermark.png', 'new_image_name.jpg');

exit();
?>

我正在尝试实现一个代码,在该代码中我可以将水印应用于右下角的任何图像。固定高度和宽度为 150x150。我在过去 2 小时内一直在尝试,但没有成功将其准确放置。

有人有想法吗?如何实现?这真的很有帮助。

您将水印图像放置在错误的位置。它需要相对于源图像的宽度和高度,以及水印图像的尺寸。这解决了您的问题:

  imagecopy($img, $watermark, $img_w - $wtrmrk_w, $img_h - $wtrmrk_h, 0, 0, $wtrmrk_w, $wtrmrk_h);