`
lyongde
  • 浏览: 90587 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

发布一个图片水印和文字水印函数

    博客分类:
  • PHP
 
阅读更多
/*
@$originalImage => 原始图片
@$waterPos       => 水印位置
@$waterImage   => 水印图片
@$waterText     => 水印文字
@$textFont      => 文字大小
@$textColor     => 文字顔色
*/
function imageWaterMark($originalImage, $waterPos = 0, $waterImage = '', $waterText = '', $textFont = 5, $textColor = '#FFFFFF')
{ 
    $isWaterImage = FALSE; 
	
	//从水印图片文件新建一幅图像
    if(!empty($waterImage) && file_exists($waterImage)) { 
        $isWaterImage     = TRUE; 
        $waterImageInfo   = getimagesize($waterImage); 
        $waterImageWidth  = $waterImageInfo[0];
        $waterImageHeight = $waterImageInfo[1];

        switch ($waterImageInfo[2]) { 
            case 1:
				$waterIm = @imagecreatefromgif($waterImage); break; 
            case 2:
				$waterIm = @imagecreatefromjpeg($waterImage); break; 
            case 3:
				$waterIm = @imagecreatefrompng($waterImage); break; 
            default:;
        } 
    } 
	
	//从源图片文件新建一幅图像
    if(!empty($originalImage) && file_exists($originalImage)) { 
        $originalImageInfo   = getimagesize($originalImage); 
        $originalImageWidth  = $originalImageInfo[0];
        $originalImageHeight = $originalImageInfo[1];

        switch ($originalImageInfo[2]) { 
            case 1:
				$originalIm = @imagecreatefromgif($originalImage); break; 
            case 2:
				$originalIm = @imagecreatefromjpeg($originalImage); break; 
            case 3:
				$originalIm = @imagecreatefrompng($originalImage); break; 
            default:;
        } 
    }

	//$w、$h是水印图片或水印文字的宽高度
    if($isWaterImage) {
        $w     = $waterImageWidth; 
        $h     = $waterImageHeight; 
        $label = "图片的"; 
    } else {
        $temp  = imagettfbbox(ceil($textFont * 2.5), 0, 'font/SG16.TTF', $waterText);
        $w     = $temp[2] - $temp[6]; 
        $h     = $temp[3] - $temp[7];
        $label = "文字区域";
		unset($temp);
    } 

    if( ($originalImageWidth < $w) || ($originalImageHeight < $h) ) { 
        return; 
    } 
    switch($waterPos) { 
        case 0://随机 
            $posX = rand(0, ($originalImageWidth - $w)); 
            $posY = rand(0, ($originalImageHeight - $h)); 
            break; 
        case 1://1为顶端居左 
            $posX = 0; 
            $posY = 0; 
            break; 
        case 2://2为顶端居中 
            $posX = ($originalImageWidth - $w) / 2; 
            $posY = 0; 
            break; 
        case 3://3为顶端居右 
            $posX = $originalImageWidth - $w; 
            $posY = 0; 
            break; 
        case 4://4为中部居左 
            $posX = 0; 
            $posY = ($originalImageHeight - $h) / 2; 
            break; 
        case 5://5为中部居中 
            $posX = ($originalImageWidth - $w) / 2; 
            $posY = ($originalImageHeight - $h) / 2; 
            break; 
        case 6://6为中部居右 
            $posX = $originalImageWidth - $w; 
            $posY = ($originalImageHeight - $h) / 2; 
            break; 
        case 7://7为底端居左 
            $posX = 0; 
            $posY = $originalImageHeight - $h;
            break; 
        case 8://8为底端居中 
            $posX = ($originalImageWidth - $w) / 2; 
            $posY = $originalImageHeight - $h; 
            break; 
        case 9://9为底端居右 
            $posX = $originalImageWidth - $w; 
            $posY = $originalImageHeight - $h; 
            break; 
        default://随机 
            $posX = rand(0,($originalImageWidth - $w)); 
            $posY = rand(0,($originalImageHeight - $h)); 
            break;     
    } 


	//将水印图片或文字画到源图上
    if($isWaterImage) {
		imagecopy($originalIm, $waterIm, $posX, $posY, 0, 0, $waterImageWidth, $waterImageHeight);    
    } else {
		if( !empty($textColor) && (strlen($textColor) == 7) ) { 
			$r = hexdec(substr($textColor, 1, 2)); 
			$g = hexdec(substr($textColor, 3, 2)); 
			$b = hexdec(substr($textColor, 5)); 
		} else {
			$r = 255;
			$g = 255;
			$b = 255;
		} 
		imagestring( $originalIm, $textFont, $posX, $posY, $waterText, imagecolorallocate($originalIm, $r, $g, $b));         
    } 

    //生成水印后的图片 
   @unlink($originalImage); 
    switch ($originalImageInfo[2]) { 
        case 1:
			imagegif($originalIm, $originalImage); break; 
        case 2:
			imagejpeg($originalIm, $originalImage); break; 
        case 3:
			imagepng($originalIm, $originalImage); break; 
        default:;
    } 

    //销毁图像
   imagedestroy($waterIm);
    imagedestroy($originalIm); 
}

 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics