Find the Watermark code on the Internet: /* * Function: PHP image watermark (watermark support picture or text) Parameters * $product _img background picture, that is, the need to add a watermark picture, temporarily support gif,jpg,png format; * $waterPos Watermark location, there are 10 kinds of states, 0 is 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 of the right; * 7 for the bottom of the left, 8 for the bottom center, 9 for the bottom right; * $waterImage image watermark, that is, as a watermark picture, temporarily 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, values are 1, 2, 3, 4, or 5, and the default is 5; * $textColor The text color, the value is hexadecimal color value, the default is #ff0000 (red); * * Note: Support GD 2.0,support FreeType, gif Read, GIF Create, JPG, PNG * $waterImage and $waterText should not be used at the same time, choose one of them, priority to use $waterImage. * When the $waterimage is valid, the parameters $waterstring, $stringFont, $stringColor are not effective. * The name of the image after the watermark is the same as $product _img. * Author: longware @ 2004-11-3 14:15:13 */ function Imagewatermark ($product _img, $waterPos =0, $waterImage = "", $waterText = "", $textFont =5, $textColor = "#FF0000") { $isWaterImage = FALSE; $FORMATMSG = "This file format is not supported, please use 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); $water _w = $water _info[0];//Gets the width of the watermark picture $water _h = $water _info[1];//Gets the high watermark picture Switch ($water _info[2])//Get the format of the watermark picture { Case 1water_im = imagecreatefromgif ($waterImage); Case 2water_im = Imagecreatefromjpeg ($waterImage); Case 3water_im = imagecreatefrompng ($waterImage); Default:die ($FORMATMSG); } } Reading background pictures if (!empty ($product _img) && file_exists ($product _img)) { $ground _info = getimagesize ($product _img); $ground _w = $ground _info[0];//Gets the width of the background picture $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 ($product _img); Case 2: $ground _im = imagecreatefromjpeg ($product _img); Case 3: $ground _im = imagecreatefrompng ($product _img); Default:die ($FORMATMSG); } } Else { Die ("Need to watermark the picture 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, "Arial.ttf", $waterText);//Get text using TrueType fonts The scope of the $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 you want to watermark is more than the 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 for top center $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 Central left $posX = 0; $posY = ($ground _h-$h)/2; Break Case 5://5 centered in middle $posX = ($ground _w-$w)/2; $posY = ($ground _h-$h)/2; Break Case 6://6 for Middle right $posX = $ground _w-$w; $posY = ($ground _h-$h)/2; Break Case 7://7 to 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 to 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 blending mode of the 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 destination 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 ("Watermark text color format is not correct!") "); } Imagestring ($ground _im, $textFont, $posX, $posY, $waterText, Imagecolorallocate ($ground _im, $R, $G, $B)); } //Image after watermark is generated @unlink ($product _img); switch ($ground _info[2])//Get background picture format { Case 1:imagegif ($ground _im, $product _img); Case 2:imagejpeg ($ground _im, $product _img); Case 3:imagepng ($ground _im, $product _img); Default:die ($ERRORMSG); } //Free 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<br>"; Text watermark Imagewatermark ($uploadfile, 0, "", http://www.111cn.net,5, "#FF0000"); Picture watermark $waterImage = "images/bz.gif";//Watermark Picture Path Imagewatermark ($uploadfile, 0, $waterImage); echo "} Else { echo "Fail<br>"; } } |