您现在的位置是:首页 > 技术博客 > 用PHP实现倾斜水印,实现多个水印,可以自动调整角度

用PHP实现倾斜水印,实现多个水印,可以自动调整角度

2021-06-21文远技术博客354132

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);

效果展示

用PHP实现倾斜水印,实现多个水印,可以自动调整角度

文章评论

看完文章了吗?谁便说点吧

发表 captcha

暂无评论