PHP生成文字水印和图片水印

/**
* 文字水印
* string $file 原文件
* string $watermark 水印文字
* int $opacity 透明度 0-100
*/
function watermark_text($file='', $watermark='水印', $opacity = 100){
    // 打开图片
    // 1.配置图片路径
    $src = $file;
    // 2.获取图片的信息(得到图片的基本信息)
    $info = getimagesize($src);
    // 3.获取图片类型
    $type = image_type_to_extension($info[2], false);
    // 4.在内存中创建一个图片类型一样的图像
    $fun = "imagecreatefrom{$type}";
    // 5.图片复制到内存中
    $image = $fun($src);
    // 操作图片
    // 1.设置字体的路径
    $font = "/public/assets/fonts/simhei.ttf";
    // 2.填写水印内容
    $content = $watermark;
    // 3.设置字体的颜色rgb和透明度
    $col = imagecolorallocatealpha($image, 255, 255, 255, $opacity);
    // 4.写入文字
    imagettftext($image, 20, 0, $info[0]-150, $info[1]-40, $col, $font, $content);
    // 输出图片
    // 浏览器输出
    header("Content-type:{$info['mime']}");
    $func = "image{$type}";
    $func($image);
    // 保存图片
    $func($image, 'newimage.' . $type);
    // 销毁图片
    imagedestroy($image);
}
/**
* 图片水印
* string $dst_path 原文件
* string $src_path 水印文件
* int $opacity 透明度 0-100
*/
function watermark_text($dst_path='', $src_path='', $opacity = 100){
    //创建图片的实例
    $dst = imagecreatefromstring(file_get_contents($dst_path));
    $src = imagecreatefromstring(file_get_contents($src_path));
    //获取水印图片的宽高
    list($src_w, $src_h) = getimagesize($src_path);
    //将水印图片复制到目标图片上,最后个参数80是设置透明度,这里实现半透明效果
    imagecopymerge($dst, $src, 10, 10, 0, 0, $src_w, $src_h, $opacity);
    //如果水印图片本身带透明色,则使用imagecopy方法
    //imagecopy($dst, $src, 10, 10, 0, 0, $src_w, $src_h);
    //输出图片
    list($dst_w, $dst_h, $dst_type) = getimagesize($dst_path);
    switch ($dst_type) {
        case 1://GIF
            header('Content-Type: image/gif');
            imagegif($dst);
            break;
        case 2://JPG
            header('Content-Type: image/jpeg');
            imagejpeg($dst);
            break;
        case 3://PNG
            header('Content-Type: image/png');
            imagepng($dst);
            break;
        default:
            break;
    }
    imagedestroy($dst);
    imagedestroy($src);
}

原文链接:https://www.cnblogs.com/liuwanqiu/p/5733537.html