www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > bbs/require/watermark.php

    <?php
!function_exists('readover') && exit('Forbidden');

function ImgWaterMark($source,$w_pos=0,$w_img="",$w_text="",$w_font=5,$w_color="#FF0000",$w_pct,$w_quality){
	global $imgdir;
    if(!empty($source) && file_exists($source)){
        $source_info = getimagesize($source);
        $source_w    = $source_info[0];
        $source_h    = $source_info[1];
        switch($source_info[2]){
            case 1 :
				$source_img = imagecreatefromgif($source);
				break;
            case 2 :
				$source_img = imagecreatefromjpeg($source);
				break;
            case 3 :
				$source_img = imagecreatefrompng($source);
				break;
            default :
				return;
        }
    }else{
        return;
    }
    if(!empty($w_img) && file_exists("$imgdir/water/$w_img")){
        $ifWaterImage = 1;
        $water_info   = getimagesize("$imgdir/water/$w_img");
        $width        = $water_info[0];
        $height       = $water_info[1];
        switch($water_info[2]){
            case 1 :
				$water_img = imagecreatefromgif("$imgdir/water/$w_img");
				break;
            case 2 :
				$water_img = imagecreatefromjpeg("$imgdir/water/$w_img");
				break;
            case 3 :
				$water_img = imagecreatefrompng("$imgdir/water/$w_img");
				break;
            default :
				return;
        }
    }else{
		$ifWaterImage = 0;
        $temp = imagettfbbox(ceil($w_font*2.5),0,"./cour.ttf",$w_text);//取得使用 TrueType 字体的文本的范围
        $width = $temp[2] - $temp[6];
        $height = $temp[3] - $temp[7];
        unset($temp);
    }
    switch($w_pos){
        case 0:
            $wX = rand(0,($source_w - $width));
            $wY = rand(0,($source_h - $height));
            break;
        case 1:
            $wX = 5;
            $wY = 5;
            break;
        case 2:
            $wX = ($source_w - $width) / 2;
            $wY = 0;
            break;
        case 3:
            $wX = $source_w - $width;
            $wY = 0;
            break;
        case 4:
            $wX = 0;
            $wY = $source_h - $height;
            break;
		case 5:
            $wX = ($source_w - $width) / 2;
            $wY = $source_h - $height;
            break;
		case 6:
			$wX = $source_w - $width;
			$wY = $source_h - $height;
			break;
        default:
			$wX = ($source_w - $width) / 2;
			$wY = ($source_h - $height) / 2;
            break;
    }
    imagealphablending($source_img, true);

    if($ifWaterImage){
		imagecopymerge($source_img, $water_img, $wX, $wY, 0, 0, $width,$height,$w_pct);
    }else{
        if(!empty($w_color) && (strlen($w_color)==7)){
            $R = hexdec(substr($w_color,1,2));
            $G = hexdec(substr($w_color,3,2));
            $B = hexdec(substr($w_color,5));
        }else{
            return;
        }
        imagestring($source_img,$w_font,$wX,$wY,$w_text,imagecolorallocate($source_img,$R,$G,$B));
    }

    P_unlink($source);
    switch($source_info[2]){
        case 1 :
			imagegif($source_img,$source);
			break;
        case 2 :
			imagejpeg($source_img,$source,$w_quality);
			break;
        case 3 :
			imagepng($source_img,$source);
			break;
        default :
			return;
    }

    if(isset($water_info)){
		unset($water_info);
	}
    if(isset($water_img)){
		imagedestroy($water_img);
	}
    unset($source_info);
    imagedestroy($source_img);
}
?>