/*
* Function: php image watermark (watermark supports images or text) * Parameters: * $groundImage background image, that is, the image that needs to be watermarked, temporarily Only supports GIF, JPG, PNG formats; * $waterPos watermark position, there are 10 states, 0 is a random position; *1 means top left, 2 means top center, 3 means top right; *4 means middle left , 5 means middle center, 6 means middle right; *7 means bottom left, 8 means bottom center, 9 means bottom right; * $waterImage image watermark, that is, the image used as a watermark, currently only supports GIF , JPG, PNG format; * $waterText text watermark, that is, text is used as a watermark, supports ASCII code, does not support Chinese; * $textFont text size, the value is 1, 2, 3, 4 or 5, the default is 5 ; * $textColor text color, the value is a hexadecimal color value, the default is #FF0000 (red); * http://bbs.it-home.org * Note: Support GD 2.0, Support FreeType, GIF Read, GIF Create, JPG, PNG * It is best not to use $waterImage and $waterText at the same time. Just choose one of them, and use $waterImage first. * When $waterImage is valid, the parameters $waterString, $stringFont, and $stringColor are not valid. * The file name of the watermarked image is the same as $groundImage. * Author: longware @ 2004-11-3 14:15:13 */ function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$textFont=5,$textColor ="#FF0000") { $isWaterImage = FALSE; $formatMsg = "This file format is not supported yet. Please use image processing software to convert the image to GIF, JPG, or PNG format."; //Read watermark file if(!empty($waterImage) && file_exists($waterImage)) { $isWaterImage = TRUE; $water_info = getimagesize($waterImage); $water_w= $water_info[ 0];//Get the width of the watermark image $water_h= $water_info[1];//Get the height of the watermark image switch($water_info[2])//Get the format of the watermark image { case 1:$ water_im = imagecreatefromgif($waterImage);break; case 2:$water_im = imagecreatefromjpeg($waterImage);break; case 3:$water_im = imagecreatefrompng($waterImage);break; default:die($formatMsg); } } //Read the background image if(!empty($groundImage) && file_exists($groundImage)) { $ground_info = getimagesize($groundImage); $ground_w= $ground_info[0];// Get the width of the background image $ground_h= $ground_info[1];//Get the height of the background image switch($ground_info[2])//Get the format of the background image { case 1:$ground_im = imagecreatefromgif($ groundImage);break; case 2:$ground_im = imagecreatefromjpeg($groundImage);break; case 3:$ground_im = imagecreatefrompng($groundImage);break; default:die($formatMsg); } } else { die("The picture that needs to be watermarked does not exist!"); } //Watermark position if($isWaterImage)//Picture watermark { $w = $water_w; $h = $water_h; $label = "Picture"; } else//Text watermark { $temp = imagettfbbox(ceil($textFont*2.5),0,"./cour.ttf",$waterText);//Get Range of text using TrueType font $w = $temp[2] - $temp[6]; $h = $temp[3] - $temp[7]; unset($temp); $label = "Text area"; } if( ($ground_w<$w) || ($ground_h<$h) ) { echo "The length or width of the image that needs to be watermarked is longer than the watermark ".$label." Small, unable to generate watermark! "; return; } switch($waterPos) { case 0://random $posX = rand(0,($ground_w - $w)); $posY = rand(0,($ground_h - $h)); break; case 1://1 means top left $posX = 0; $posY = 0; break; case 2://2 means top center $posX = ($ ground_w - $w) / 2; $posY = 0; break; case 3://3 is the top right $posX = $ground_w - $w; $posY = 0; break; case 4 ://4 means center left $posX = 0; $posY = ($ground_h - $h) / 2; break; case 5://5 means center center $posX = ($ground_w - $w ) / 2; $posY = ($ground_h - $h) / 2; break; case 6://6 is the middle right $posX = $ground_w - $w; $posY = ($ground_h - $h) / 2; break; case 7://7 is bottom left $posX = 0; $posY = $ground_h - $h; break; case 8://8 is bottom center $posX = ($ground_w - $w) / 2; $posY = $ground_h - $h; break; case 9://9 is bottom right $posX = $ground_w - $w; $posY = $ground_h - $h; break; default://random $posX = rand(0,($ground_w - $w)); $posY = rand(0,($ground_h - $h) ; posY, 0, 0, $water_w,$water_h);//Copy watermark to target file } else//Text watermark { if( !empty($textColor) && (strlen($textColor)==7) ) { $R = hexdec(substr($textColor,1,2)); $G = hexdec(substr($textColor,3,2)); $B = hexdec(substr($textColor,5) ); } else { die("The watermark text color format is incorrect!"); } imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B)); } //The image after generating the watermark @unlink($groundImage); switch($ground_info[2])//Get the format of the background image { case 1:imagegif($ground_im,$groundImage);break; case 2:imagejpeg($ground_im,$ groundImage);break; case 3:imagepng($ground_im,$groundImage);break; default:die($errorMsg); } //Release memory if(isset($water_info)) unset($water_info) ; if(isset($water_im)) imagedestroy($water_im); unset($ground_info); imagedestroy($ground_im); }
//------
if(isset($_FILES) && !empty($_FILES['userfile']) && $_FILES['userfile']['size']>0)
{
$uploadfile = "./".time( )."_".$_FILES['userfile']['name'];
if (copy($_FILES['userfile']['tmp_name'], $uploadfile))
{
echo "OK ";
//Text watermark
imageWaterMark($uploadfile,0,"","your water text",9,"#EBEBEB");
//Image watermark
//$waterImage="./images/watermark. gif";//Watermark image path
//imageWaterMark($uploadfile,9,$waterImage);
echo " ";
}
else
{
echo "Fail ";
}
}
?>
File:
Copy code