PHP封装一个添加水印的方法

<?php
// 图片添加水印的方法  
// 参数:source-主图、water-水印图、position-水印的位置(将图片分为九宫格)、alpha-透明度、type-输出图片格式、path-输出路径、isRandName-图片文件名是否随机
function watermark($source, $water, $position = 9, $alpha = 100, $type = 'jpeg', $path = 'test', $isRandName = true)
{
    // 打开图片
    $sourceRes = open($source);
    $waterRes = open($water);

    // 获取图片大小,算出水印放置的位置
    $sourceInfo = getimagesize($source);
    $waterInfo = getimagesize($water);

    switch ($position) { //算出位置
        case 1:
            $x = 0;
            $y = 0;
            break;
        case 2:
            $x = ($sourceInfo[0] - $waterInfo[0]) / 2;
            $y = 0;
            break;
        case 3:
            $x = $sourceInfo[0] - $waterInfo[0];
            $y = 0;
            break;
        case 4:
            $x = 0;
            $y = ($sourceInfo[1] - $waterInfo[1]) / 2;
            break;
        case 5:
            $x = ($sourceInfo[0] - $waterInfo[0]) / 2;
            $y = ($sourceInfo[1] - $waterInfo[1]) / 2;
            break;
        case 6:
            $x = $sourceInfo[0] - $waterInfo[0];
            $y = ($sourceInfo[1] - $waterInfo[1]) / 2;
            break;
        case 7:
            $x = 0;
            $y = $sourceInfo[1] - $waterInfo[1];
            break;
        case 8:
            $x = ($sourceInfo[0] - $waterInfo[0]) / 2;
            $y = $sourceInfo[1] - $waterInfo[1];
            break;
        case 9:
            $x = $sourceInfo[0] - $waterInfo[0];
            $y = $sourceInfo[1] - $waterInfo[1];
            break;
        default: //如果没有传1-9的数字就默认随机放
            $x = mt_rand(0, $sourceInfo[0] - $waterInfo[0]);
            $y = mt_rand(0, $sourceInfo[1] - $waterInfo[1]);
            break;
    }

    // 使用刚求出的$x,$y合并两张图片
    imagecopymerge($sourceRes, $waterRes, $x, $y, 0, 0, $waterInfo[0], $waterInfo[1], $alpha);

    // 处理路径与文件名
    $func = 'image' . $type;
    /* 
    imagepng();
    imagejpeg();
    imagewbmp();
    */
    if ($isRandName) {
        $name = uniqid() . '.' . $type;
    } else {
        $pathInfo = pathinfo($source);
        $name = $pathInfo['filename'] . '.' . $type;
    }

    $path = rtrim($path, '/') . '/' . $name;
    $func($sourceRes, $path);
    imagedestroy($sourceRes);
    imagedestroy($waterRes);
}

// 打开图片的函数
function open($path)
{
    // 判断是否存在
    if (!file_exists($path)) {
        exit('文件不存在');
    }

    $info = getimagesize($path);
    switch ($info['mime']) {
        case 'image/jpeg':
        case 'image/jpg':
        case 'image/pjpeg':
            $res = imagecreatefromjpeg($path);
            break;
        case 'image/png':
            $res = imagecreatefrompng($path);
            break;
        case 'image/gif':
            $res = imagecreatefromgif($path);
            break;
        case 'image/wbmp':
        case 'image/bmp':
            $res = imagecreatefromwebp($path);
            break;
    }
    return $res;
}

// watermark('E:\phpstudy_pro\WWW\test.png', 'E:\phpstudy_pro\WWW\watermark.png', 1.2);

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。