PHP实现图片加水印实例代码(平铺水印+倾斜水印)

2024-08-28实例代码
210

PHP实现图片加水印代码,具体代码如下:
//$img => 图片,$source => 水印
    $img = 'test.jpg';
    $source = 'source.png';

    //参数设置,值越大水印越稀(水印平铺的越少),相反...
    $ww = 0;  //每个水印的左右间距
    $hh = 0;  //每个水印的上下间距

    //水印图片旋转角度
    $angle = 30;

    //水印透明度
    $opacity = 20;

    //获取图片和水印的信息
    $imgInfo = getimagesize($img);
    $sourceInfo = getimagesize($source);

    //创建水印图像资源
    $fun   = 'imagecreatefrom' . image_type_to_extension($sourceInfo[2], false);
    $water = $fun($source);
    //水印图片旋转
    $water = imagerotate($water,$angle, imageColorAllocateAlpha($water, 0, 0, 0, 127));
    //获取水印图片旋转后的宽度和高度
    $sourceInfo[0] = imagesx($water);
    $sourceInfo[1] = imagesy($water);

    //设定水印图像的混色模式
    imagealphablending($water, true);
    //添加水印
    $src = imagecreatetruecolor($sourceInfo[0], $sourceInfo[1]);
    // 调整默认颜色
    $color = imagecolorallocate($src, 255, 255, 255);
    imagefill($src, 0, 0, $color);

    //创建图片图像资源
    $fun   = 'imagecreatefrom' . image_type_to_extension($imgInfo[2], false);
    $thumb = $fun($img);

    //定义平铺数据
    $x_length = $imgInfo[0] - 10; //x轴总长度
    $y_length = $imgInfo[1] - 10; //y轴总长度
    //循环平铺水印
    for ($x = 0; $x < $x_length; $x) {
        for ($y = 0; $y < $y_length; $y) {
            imagecopy($src, $thumb, 0, 0, $x, $y, $sourceInfo[0], $sourceInfo[1]);
            imagecopy($src, $water, 0, 0, 0, 0, $sourceInfo[0], $sourceInfo[1]);
            imagecopymerge($thumb, $src, $x, $y, 0, 0, $sourceInfo[0], $sourceInfo[1], $opacity);
            $y += $sourceInfo[1] + $hh;
        }
        $x += $sourceInfo[0] + $ww;
    }

    header("Content-type:image/jpeg");
    imagejpeg($thumb);

    //销毁零时图片资源
    imagedestroy($src);
    //销毁水印资源
    imagedestroy($water);
最终实现效果如下:
The End

相关推荐

layui后台布局实例代码
layui后台布局的实例代码,以下是详细代码: !DOCTYPE htmlhtmlhead meta charset="utf-8" meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" titlelayout 后台大布局 - Layui/title link rel="stylesheet" ...
2025-10-15 实例代码
68

可自动切换的tab实例代码
可自动切换的tab实例代码,html代码如下: !-- tab标签代码begin --div class="tab1" id="tab1" div class="menu" ul li id="one1" onclick="setTab('one',1)"新闻/li li id="one2" onclick="setTab('one',2)"活动/li li id="one3" onclick="setTab('one',3)"...
2025-09-16 实例代码
114

php数据处理:数组根据某字段进行分组
php数据处理:数组根据某字段进行分组,实例代码如下: /** * @description:根据数据 * @param {dataArr:需要分组的数据;keyStr:分组依据} * @return: */ protected function dataGroup(array $dataArr,string $keyStr) :array { $newArr=[]; foreach ($data...
2025-06-12 实例代码
188

LayUI登录页面页设计实例
实例代码如下: !DOCTYPE htmlhtml lang="en" head meta charset="utf-8" link rel="stylesheet" href="layui/css/layui.css" style type="text/css" .container{ width: 420px; height: 320px; min-height: 320px; max-height: 320px; position: absolute; t...
2025-04-13 实例代码
234

MUI Picker Input设置默认时间回显实例代码
MUI Picker Input设置默认时间回显实例代码 mui('body').on('tap', '#begTime', function () { //日期选择 var dtPicker = new mui.DtPicker({ type: 'date' }); /*参数:'datetime'-完整日期视图(年月日时分) 'date'--年视图(年月日) 'time' --时间视图(时分...
2025-01-09 实例代码
139

layui实现带清除按钮的输入框
layui实现带清除按钮的输入框,首先html文件如下: !DOCTYPE htmlhtmlhead meta charset="utf-8" meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" title测试 - layui/title link rel="stylesheet" href="layui/css/lay...
2024-12-31 实例代码
200