千家信息网

PHP中怎么添加图片水印

发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,本篇内容主要讲解"PHP中怎么添加图片水印",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP中怎么添加图片水印"吧!在我们的日常生活中,为了不希望自己的
千家信息网最后更新 2025年11月20日PHP中怎么添加图片水印

本篇内容主要讲解"PHP中怎么添加图片水印",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"PHP中怎么添加图片水印"吧!

在我们的日常生活中,为了不希望自己的图片被盗用,经常能够看到在一些图片上添加水印,比如我们网站上,输入图片文件的话会自动在右下角加上一个水印,那么这种水印效果是怎么实现的呢?通过PHP就可以实现为图片增加水印的效果。

在之前文章中对图片进行裁剪放到目标图上的操作和添加水印有些类似,为了实现添加水印,需要通过 imagecopymerge函数。

imagecopymerge函数

imagecopymerge函数的语法格式如下:

imagecopymerge($目标图片,$来源图片,$目标开始的x ,$目标开始的y,$来源的x ,$来源的y ,$来源的宽 ,$来源的高 ,$透明度)

其中透明度的值是0-100的整数,透明度的值越大,水印越不透明。

接下来我们通过实例来看一下应该怎样给图片增加水印:

首先准备了一个名为test.png的图片和一个名为logo.png的水印图片放到了我们的根目录里

注意上面这个是示例图片,下面的水印并不是我添加的,是网站自动添加的,为了区分,实例的水印是下面这样的

那接下来,操作如下:

输出结果:

由上述结果可以看出,通过imagecopymerge函数添加了一个透明度为50的水印。

拓展知识imagecopy函数

不止使用imagecopymerge函数一种方法添加水印,也能够通过 imagecopy() 函数,它能够复制函数的一部分,它的语法格式如下:

imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)

它的含义是,在来源图片的(x,y)的地方选取宽为w,高为h的矩形区域到目标图片的(x,y)上。

使用 PHP 中的 imagesx()、imagesy() 两个函数来分别获取图片的宽度和高度。它们的语法格式如下:

imagesx(resource $image)imagesy(resource $image)

实例如下:

 $district OR $district > 9) $district = 9;        switch($district){            case 1:                $x = +5;                $y = +5;                break;            case 2:                $x = ($img_w - $watermark_w) / 2;                $y = +5;                break;            case 3:                $x = $img_w - $watermark_w - 5;                $y = +5;                break;            case 4:                $x = +5;                $y = ($img_h - $watermark_h) / 2;                break;            case 5:                $x = ($img_w - $watermark_w) / 2;                $y = ($img_h - $watermark_h) / 2;                break;            case 6:                $x = $img_w - $watermark_w;                $y = ($img_h - $watermark_h) / 2;                break;            case 7:                $x = +5;                $y = $img_h - $watermark_h - 5;                break;            case 8:                $x = ($img_w - $watermark_w) / 2;                $y = $img_h - $watermark_h - 5;                break;            case 9:                $x = $img_w - $watermark_w - 5;                $y = $img_h - $watermark_h - 5;                break;        }        switch ($imginfo[2]) {            case 1:                $im = @imagecreatefromgif($img);                break;            case 2:                $im = @imagecreatefromjpeg($img);                break;            case 3:                $im = @imagecreatefrompng($img);                break;        }        switch ($watermarkinfo[2]) {            case 1:                $watermark_logo = @imagecreatefromgif($watermark);                break;            case 2:                $watermark_logo = @imagecreatefromjpeg($watermark);                break;            case 3:                $watermark_logo = @imagecreatefrompng($watermark);                break;        }        if(!$im or !$watermark_logo) return false;        $dim = @imagecreatetruecolor($img_w, $img_h);        if(@imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){            imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h);        }        $file = dirname($img) . '/w' . basename($img);        $result = imagejpeg ($dim,$file,$watermarkquality);        imagedestroy($watermark_logo);        imagedestroy($dim);        imagedestroy($im);        if($result){            echo $img.' 水印添加成功';            return;        }        else {            return false;        }    }    $file = 'test.png';   //待加水印的图片地址    $water = 'logo.png';  //水印图片的地址    watermark($file, $water);?>

输出结果:

效果如下:

到此,相信大家对"PHP中怎么添加图片水印"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0