众所周知,WordPress 本身不提供自动添加水印的功能,那么我们如何实现WordPress自动给上传的图片添加水印的功能呢,方法有很多,今天主要给大家介绍一下 如何通过代码实现WordPress自动给上传的图片添加水印

使用代码

下面是一个示例代码,可以在 WordPress 中使用

function add_watermark($attachment_ID) {
    $attachment = get_post($attachment_ID);
    $mime_type = $attachment->post_mime_type;

    // 仅在上传的图片类型为 jpeg, png 或 gif 时添加水印
    if (strpos($mime_type, 'jpeg') !== false || strpos($mime_type, 'png') !== false || strpos($mime_type, 'gif') !== false) {

        // 添加水印
        $upload_dir = wp_upload_dir();
        $file_path = $upload_dir['basedir'] . '/' . $attachment->guid;

        // 设置水印图片的路径
        $watermark_path = get_template_directory() . '/images/watermark.png';

        // 获取图片的大小和类型
        list($width, $height, $type) = getimagesize($file_path);

        // 根据图片类型创建相应的画布
        switch ($type) {
            case IMAGETYPE_JPEG:
                $image = imagecreatefromjpeg($file_path);
                break;
            case IMAGETYPE_PNG:
                $image = imagecreatefrompng($file_path);
                break;
            case IMAGETYPE_GIF:
                $image = imagecreatefromgif($file_path);
                break;
            default:
                return;
        }

        // 添加水印
        $watermark = imagecreatefrompng($watermark_path);
        $watermark_width = imagesx($watermark);
        $watermark_height = imagesy($watermark);
        $dest_x = $width - $watermark_width - 10;
        $dest_y = $height - $watermark_height - 10;
        imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);

        // 保存添加水印后的图片
        switch ($type) {
            case IMAGETYPE_JPEG:
                imagejpeg($image, $file_path);
                break;
            case IMAGETYPE_PNG:
                imagepng($image, $file_path);
                break;
            case IMAGETYPE_GIF:
                imagegif($image, $file_path);
                break;
            default:
                return;
        }

        // 释放内存
        imagedestroy($image);
        imagedestroy($watermark);
    }
}

// 添加水印到上传的图片
add_action('add_attachment', 'add_watermark');

在上述代码中,我们首先检查上传的文件类型是否为 jpeg、png 或 gif,如果是,则从模板目录中获取水印图片的路径并添加水印。最后,我们保存添加水印后的图片。

最后,在 WordPress 中上传的图片就会自动添加水印了。

这段代码需要加入到 functions.php 文件中,并且只会对新上传的图片生效。对于已经上传的图片,您需要手动添加水印或使用插件来实现。此外,自动添加水印可能会增加服务器负担和图片处理时间,因此请确保您的服务器具有足够的性能和存储空间

使用插件

另外,还有一些插件也可以实现这个功能。以下是一些常用的插件:

  1. Easy Watermark
    • Easy Watermark 是一款简单易用的插件,可以帮助您快速添加水印。您可以选择在上传时添加水印,也可以在以前上传的图片上添加水印。此外,该插件还提供了多种水印样式和设置选项。
  2. Image Watermark
    • Image Watermark 是另一个强大的插件,可以让您添加文本或图像水印。该插件提供了多种设置选项,如水印位置、大小、透明度等。
  3. Watermark WP Image Protect
    • Watermark WP Image Protect 是一款专门为保护您的图片而设计的插件。它可以帮助您添加不可删除的水印,并提供了多种设置选项,如水印样式、位置、大小、透明度等。

无论添加代码,还是使用插件,自动添加水印可能会增加服务器负担和图片处理时间,因此请确保您的服务器具有足够的性能和存储空间。