众所周知,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 文件中,并且只会对新上传的图片生效。对于已经上传的图片,您需要手动添加水印或使用插件来实现。此外,自动添加水印可能会增加服务器负担和图片处理时间,因此请确保您的服务器具有足够的性能和存储空间
使用插件
另外,还有一些插件也可以实现这个功能。以下是一些常用的插件:
- Easy Watermark
- Easy Watermark 是一款简单易用的插件,可以帮助您快速添加水印。您可以选择在上传时添加水印,也可以在以前上传的图片上添加水印。此外,该插件还提供了多种水印样式和设置选项。
- Image Watermark
- Image Watermark 是另一个强大的插件,可以让您添加文本或图像水印。该插件提供了多种设置选项,如水印位置、大小、透明度等。
- Watermark WP Image Protect
- Watermark WP Image Protect 是一款专门为保护您的图片而设计的插件。它可以帮助您添加不可删除的水印,并提供了多种设置选项,如水印样式、位置、大小、透明度等。
无论添加代码,还是使用插件,自动添加水印可能会增加服务器负担和图片处理时间,因此请确保您的服务器具有足够的性能和存储空间。
评论 (0)