/*
@$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);
}