source/plugin/
目录,找到 image.php
文件。,2. 使用文本编辑器打开 image.php
文件,在文件末尾添加以下代码:,,``php,function watermark($src_img, $dst_img, $watermark_img, $pos = 'bl', $margin = 10) {, list($w_src, $h_src, $type) = getimagesize($src_img);, list($w_dst, $h_dst) = getimagesize($watermark_img);,, if ($type == IMAGETYPE_JPEG) {, $im = imagecreatefromjpeg($src_img);, } elseif ($type == IMAGETYPE_GIF) {, $im = imagecreatefromgif($src_img);, } elseif ($type == IMAGETYPE_PNG) {, $im = imagecreatefrompng($src_img);, },, $dimention = imagettfbbox(100, 0, "Arial", "Watermark");, $text_width = $dimention[2] $dimention[0];, $text_height = $dimention[1] $dimention[7];,, switch ($pos) {, case 'bl':, $x = $w_src $w_dst $margin;, $y = $h_src $h_dst $margin;, break;, case 'br':, $x = $w_src $w_dst $margin;, $y = $margin;, break;, case 'tl':, $x = $margin;, $y = $h_src $h_dst $margin;, break;, case 'tr':, $x = $margin;, $y = $margin;, break;, },, if ($type == IMAGETYPE_JPEG) {, $overlay = imagecreatefromjpeg($watermark_img);, } elseif ($type == IMAGETYPE_GIF) {, $overlay = imagecreatefromgif($watermark_img);, } elseif ($type == IMAGETYPE_PNG) {, $overlay = imagecreatefrompng($watermark_img);, },, imagecopy($im, $overlay, $x, $y, 0, 0, $w_dst, $h_dst);,, if ($type == IMAGETYPE_JPEG) {, imagejpeg($im, $dst_img);, } elseif ($type == IMAGETYPE_GIF) {, imagegif($im, $dst_img);, } elseif ($type == IMAGETYPE_PNG) {, imagepng($im, $dst_img);, },, imagedestroy($im);, imagedestroy($overlay);,},
`,,3. 保存并关闭
image.php 文件。,4. 在需要添加水印的地方调用
watermark() 函数,,,
`php,$src_img = 'source.jpg'; // 源图片路径,$dst_img = 'destination.jpg'; // 目标图片路径,$watermark_img = 'watermark.png'; // 水印图片路径,watermark($src_img, $dst_img, $watermark_img, 'br'); // 将水印添加到右下角,
``,,这样,就可以在Discuz X3.2/X2.5中为缩略图添加水印了。Discuz X3.2/X2.5缩略图添加水印方法
准备工作
1、安装ImageMagick:
ImageMagick是一个用于创建、编辑和合成图像的开源软件套件。
在Windows系统中,可以从[ImageMagick官网](https://imagemagick.org/script/download.php)下载并安装。
在Linux系统中,可以使用包管理器进行安装,如sudo apt-get install imagemagick
。
2、准备水印图片:
选择一张透明的PNG图片作为水印,确保其尺寸适中,不影响原图的主要内容。
修改Discuz配置文件
1、找到Discuz的根目录:
进入Discuz的安装目录,找到config
文件夹。
2、编辑配置文件:
打开config
文件夹中的config_global.php
文件。
在文件中添加以下代码:
```php
$_config['watermark']['enabled'] = 1; // 开启水印功能
$_config['watermark']['type'] = 'png'; // 水印类型,可以是'png'或'jpg'
$_config['watermark']['quality'] = 90; // 水印质量,范围是1-100
$_config['watermark']['position'] = array('x' => 50, 'y' => 50); // 水印位置,数组形式,如array('x' => 50, 'y' => 50)
$_config['watermark']['size'] = array('width' => 100, 'height' => 100); // 水印尺寸,数组形式,如array('width' => 100, 'height' => 100)
$_config['watermark']['opacity'] = 50; // 水印透明度,范围是0-100
```
保存文件并关闭。
修改Discuz源代码
1、找到Discuz的源码目录:
进入Discuz的安装目录,找到source
文件夹。
2、编辑源码文件:
打开source/function/function_image.php
文件。
在文件中找到image_watermark()
函数,并进行如下修改:
```php
function image_watermark($filename, $watermark, $position, $size, $opacity) {
$im = new \Imagick(realpath($filename));
$mark = new \Imagick(realpath($watermark));
$im->compositeImage($mark, \Imagick::COMPOSITE_OVER, $position['x'], $position['y'], $size['width'], $size['height']);
$im->setImageOpacity($opacity / 100);
return $im;
}
```
保存文件并关闭。
测试效果
1、上传图片:
在Discuz论坛中上传一张图片,查看是否成功添加了水印。
2、调整参数:
根据实际需求,可以调整水印的位置、大小、透明度等参数,以达到最佳效果。
相关问题与解答:
1、问题一:如何删除已经添加的水印?
解答:要删除已经添加的水印,需要修改Discuz的配置文件和源码文件,将相关代码注释掉或删除,然后重新上传图片,即可看到没有水印的效果。
2、问题二:如何自定义水印内容?
解答:要自定义水印内容,可以在Discuz的配置文件中设置水印类型为'text',并指定水印文本的内容、字体、颜色等参数,然后在源码文件中修改image_watermark()
函数,根据配置信息生成水印文本,最后重新上传图片,即可看到自定义的水印内容。