- PHP watermark function
- function Imagewatermark ($groundImage, $waterPos =0, $waterImage = "", $waterText = "", $textFont =5, $textColor = "#FF0000")
- {
- $isWaterImage = FALSE;
- $FORMATMSG = "Does not support this file format, please use the picture processing software to convert the picture to GIF, JPG, PNG format. ";
- Read Watermark File
- if (!empty ($waterImage) && file_exists ($waterImage))
- {
- $isWaterImage = TRUE;
- $water _info = getimagesize ($waterImage); What you get is an array.
- $water _w = $water _info[0];//To obtain the width of the watermark picture
- $water _h = $water _info[1];//To obtain a high watermark image
- Switch ($water _info[2])//Get the format of the watermark picture
- {
- Case 1: $water _im = Imagecreatefromgif ($waterImage); Convert a picture to PHP's recognizable encoding process
- Case 2: $water _im = Imagecreatefromjpeg ($waterImage); Convert a picture to PHP's recognizable encoding process
- Case 3: $water _im = Imagecreatefrompng ($waterImage); Convert a picture to PHP's recognizable encoding process
- Default:die ($FORMATMSG);
- }
- }
- Read background picture
- 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 a high background picture
- Switch ($ground _info[2])//Get the format of the background picture
- {
- Case 1: $ground _im = Imagecreatefromgif ($groundImage);
- Case 2: $ground _im = Imagecreatefromjpeg ($groundImage);
- Case 3: $ground _im = Imagecreatefrompng ($groundImage);
- Default:die ($FORMATMSG);
- }
- }
- Else
- {
- Die ("The picture that needs watermark 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, "C:/windows/fonts/stcaiyun.ttf", $waterText);//Gets the range of text that uses TrueType fonts
- $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 picture that needs to be watermarked is more than a watermark". $label. " Still 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 for top left
- $posX = 0;
- $posY = 0;
- Break
- Case 2://2 centered on the top
- $posX = ($ground _w-$w)/2;
- $posY = 0;
- Break
- Case 3://3 for top right
- $posX = $ground _w-$w;
- $posY = 0;
- Break
- Case 4://4 for the middle left
- $posX = 0;
- $posY = ($ground _h-$h)/2;
- Break
- Case 5://5 centered in the middle
- $posX = ($ground _w-$w)/2;
- $posY = ($ground _h-$h)/2;
- Break
- Case 6://6 for the middle right
- $posX = $ground _w-$w;
- $posY = ($ground _h-$h)/2;
- Break
- Case 7://7 for Bottom left
- $posX = 0;
- $posY = $ground _h-$h;
- Break
- Case 8://8 centered at bottom
- $posX = ($ground _w-$w)/2;
- $posY = $ground _h-$h;
- Break
- Case 9://9 for 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
- }
- To set the color blending mode of an image
- Imagealphablending ($ground _im, true);
- if ($isWaterImage)//Picture 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,));
- $G = Hexdec (substr ($textColor, 3,2));
- $B = Hexdec (substr ($textColor, 5));
- }
- Else
- {
- Die ("Watermark text color format is not correct! ");
- }
- Imagestring ($ground _im, $textFont, $posX, $posY, $waterText, Imagecolorallocate ($ground _im, $R, $G, $B));
- }
- Create a picture after a watermark
- @unlink ($groundImage);
- Switch ($ground _info[2])//Get the format of the background picture
- {
- Case 1:imagegif ($ground _im, $groundImage); Create a picture in GIF format
- Case 2:imagejpeg ($ground _im, $groundImage); Create a picture in JPEG format
- Case 3:imagepng ($ground _im, $groundImage); Create a picture in PNG format
- Default:die ($ERRORMSG);
- }
- Freeing memory
- if (Isset ($water _info)) unset ($water _info);
- if (Isset ($water _im)) Imagedestroy ($water _im);
- unset ($ground _info);
- Imagedestroy ($ground _im);
- }
- ?>
- PHP Image upload code:
- for ($i =0; $i
- {
- $upfile = "./img/". ($i + 1). ". PNG ";//Here's your path.
- if (Move_uploaded_file ($_files[' userfile '] [' tmp_name '] [$i], $upfile)) {
- Imagewatermark ($upfile, 9, "./shuiyin.png", "Made by Chenduan", 5, "#FF0000");
- /*
- * Function: Image watermark (watermark supports picture or text)
- * Imagewatermark ($groundImage, $waterPos =0, $waterImage = "", $waterText = "", $textFont =5, $textColor = "#FF0000")
- Parameters
- * $groundImage background image, that is, need to add a watermark image, temporarily only support gif,jpg,png format;
- * $waterPos watermark position, there are 10 kinds of states, 0 is a random position;
- * 1 for the top left, 2 for the top center, 3 for the top right;
- * 4 for the middle of the left, 5 for the Middle center, 6 for the middle right;
- * 7 for the bottom of the left, 8 for the bottom center, 9 for the bottom of the right;
- * $waterImage image watermark, that is, as a watermark image, temporarily only support gif,jpg,png format;
- * $waterText text watermark, that is, the text as a watermark, support ASCII code, does not support Chinese;
- * $textFont Text size, value 1, 2, 3, 4 or 5, default is 5;
- * $textColor text color, value is hexadecimal color value, default is #ff0000 (red);
- */
- echo "";
- echo "First". ($i + 1). " Picture Operation succeeded
";
- }
- else{
- echo "First". ($i + 1). " Picture can't be uploaded.
";
- }
- }
- ?>
Copy Code |