PHP图片添加水印

/**
 * PHP图片添加水印
 * @param  $img_path 图片的路径
 * @param  $position 水印的位置,默认右下角,1居中,2左上,3右下,4左下,5右下
 * @return $flag     是否输出在浏览器,默认保存文件
 */
function creatWaterMark($img_path,$position='',$flag=false){
    if(empty(@file_get_contents($img_path))){
        return false;
    }
    // $img_path = '20171225161906.png';//300*500
    $logo_path = 'logo.png';//100*30
    //图片大小
    $img_pathWH = getimagesize($img_path);
    $logo_pathWH = getimagesize($logo_path);
    switch ($position){
        case 1:
               //水印居中
            $sWH = $img_pathWH[0]/2-$logo_pathWH[0]/2;
            $eHW = $img_pathWH[1]/2-$logo_pathWH[1]/2;
            break;
        case 2:
            //水印在左上角
            $sWH = 30;
            $eHW = 20;
            break;
        case 3:
            //水印在右上角
            $sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
            $eHW = 20;
            break;
        case 4:
            //水印在左下角
            $sWH = 30;
            $eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
            break;
        case 5:
            //水印在右下角
            $sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
            $eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
            break;
        default:
            //水印在右下角
            $sWH = $img_pathWH[0]-$logo_pathWH[0]-30;
            $eHW = $img_pathWH[1]-$logo_pathWH[1]-20;
            break;
    }
    //创建图片的实例
    $dst_img = imagecreatefromstring(file_get_contents($img_path));
    // var_dump($img_pathWH,$logo_pathWH);die;
    $src_logo = imagecreatefromstring(file_get_contents($logo_path));
    //获取水印图片的宽高
    list($src_logo_w, $src_logo_h) = getimagesize($logo_path);
    //将水印图片复制到目标图片上,最后个参数50是设置透明度,这里实现半透明效果
    imagecopymerge($dst_img, $src_logo, $sWH, $eHW, 0, 0, $src_logo_w, $src_logo_h, 50);
    //如果水印图片本身带透明色,则使用imagecopy方法
    //imagecopy($dst_img, $src_logo, 10, 10, 0, 0, $src_logo_w, $src_logo_h);
    //输出图片
    list($dst_img_w, $dst_img_h, $dst_img_type) = getimagesize($img_path);
    switch ($dst_img_type) {
        case 1://GIF
            if($flag){
                header('Content-Type: image/gif');
                imagegif($dst_img); //这里是直接输出到浏览器
                return false;
            }
            imagegif($dst_img,$img_path);//这个是保存加好水印的图片
            break;
        case 2://JPG
            if($flag){
                header('Content-Type: image/jpeg');
                imagejpeg($dst_img); //这里是直接输出到浏览器
                return false;
            }
            imagejpeg($dst_img,$img_path);//这个是保存加好水印的图片
            break;
        case 3://PNG
            if($flag){
                header('Content-Type: image/png');
                imagepng($dst_img); //这里是直接输出到浏览器
                return false;
            }
            imagepng($dst_img,$img_path);//这个是保存加好水印的图片
            break;
        default:
            break;
    }
    imagedestroy($dst_img);
    imagedestroy($src_logo);
}