-
-
/* - * 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 is top left, 2 is top center, 3 is top right;
- * 4 is 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);
- *
- * 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
- */
- function imageWaterMark($groundImage,$waterPos=9,$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 location
- if($isWaterImage)//Picture watermark
- {
- $w = $water_w;
- $h = $water_h;
- $label = "Picture";
- }
- else//Text watermark
- {
- $temp = imagettfbbox(ceil($textFont*2.5),0,"simfang.ttf",$waterText);//Get using TrueType Range of font text
- $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 smaller than the watermark ".$label.", 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 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 means the bottom is on the left
- $posX = 0;
- $posY = $ground_h – $h;
- break;
- case 8://8 means the bottom is in the 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) );
- break;
- }
- //Set the image blending mode
- imagealphablending($ground_im, true);
- if($isWaterImage)//Image watermark
- {
- imagecopy($ground_im, $water_im, $posX, $ 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! ”);
- }
- //$waterText=iconv('utf-8′,'gbk',$waterText);
- imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
- }
- //Generate the watermarked image
- @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,9,"Noname. gif”,”www.nj-kingsway.com “,5,”#FF0000″);
- //Image watermark
- //$waterImage=”./Hanweb_shuiyin.gif”;//Watermark image path
- //imageWaterMark( $uploadfile,0,$waterImage);
- echo ““;
- }
- else
- {
- echo “Fail
- “;
- }
- }
- ?>
-
Copy code
|