/* @$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); }
飞飞Asp技,术乐园
|