/*
- * Function: php image watermark (watermarks support images or text)
- * Parameters:
- * $ GroundImage: specifies the background image to be Watermark. Currently, only GIF, JPG, and PNG formats are supported;
- * $ WaterPos watermark position, which has 10 statuses. 0 indicates a random position;
- * 1 is the top left, 2 is the top center, and 3 is the top right;
- * 4: center left, 5: center, and 6: center right;
- * 7 indicates that the bottom is left, 8 indicates that the bottom is center, and 9 indicates that the bottom is right;
- * $ WaterImage: specifies the image Watermark. Currently, only the GIF, JPG, and PNG formats are supported;
- * $ WaterText text watermark: uses text as a watermark. it supports ASCII codes and does not support Chinese characters;
- * $ TextFont text size. The value is 1, 2, 3, 4, or 5. the default value is 5;
- * $ TextColor text color. The value is a hexadecimal color value. The default value is # FF0000 (red );
- * Http://bbs.it-home.org
- * Note: Support GD 2.0, Support FreeType, GIF Read, GIF Create, JPG, and PNG
- * $ WaterImage and $ waterText should not be used at the same time. select one of them and use $ waterImage first.
- * When $ waterImage is valid, $ waterString, $ stringFont, and $ stringColor are invalid.
- * The name of the watermark image is the same as that of $ 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 Currently. use image processing software to convert images to GIF, JPG, and PNG formats. ";
- // Read the watermark file
- If (! Empty ($ waterImage) & file_exists ($ waterImage ))
- {
- $ IsWaterImage = TRUE;
- $ Water_info = getimagesize ($ waterImage );
- $ Water_w = $ water_info [0]; // Obtain the watermark image width.
- $ Water_h = $ water_info [1]; // Get the watermark image height
- Switch ($ water_info [2]) // Obtain the watermark image format
- {
- 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]; // Obtain the width of the background image.
- $ Ground_h = $ ground_info [1]; // get the height of the background image
- Switch ($ ground_info [2]) // Obtain the background image format
- {
- 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 image to be watermarked does not exist! ");
- }
- // Watermark Position
- If ($ isWaterImage) // image watermark
- {
- $ W = $ water_w;
- $ H = $ water_h;
- $ Label = "image ";
- }
- Else // text watermark
- {
- $ Temp = imagettfbbox (ceil ($ textFont * 2.5), 0, "./cour. ttf", $ waterText); // get the text range using the 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 to be watermark is smaller than that of the watermark". $ label. ". The Watermark cannot be generated! ";
- Return;
- }
- Switch ($ waterPos)
- {
- Case 0: // random
- $ PosX = rand (0, ($ ground_w-$ w ));
- $ PosY = rand (0, ($ ground_h-$ h ));
- Break;
- Case 1: // 1 is the top left
- $ PosX = 0;
- $ PosY = 0;
- Break;
- Case 2: // 2 center the top
- $ PosX = ($ ground_w-$ w)/2;
- $ PosY = 0;
- Break;
- Case 3: // 3: top right
- $ PosX = $ ground_w-$ w;
- $ PosY = 0;
- Break;
- Case 4: // 4 is left in the middle
- $ PosX = 0;
- $ PosY = ($ ground_h-$ h)/2;
- Break;
- Case 5: // 5 center in the middle
- $ PosX = ($ ground_w-$ w)/2;
- $ PosY = ($ ground_h-$ h)/2;
- Break;
- Case 6: // 6 is the center and right
- $ PosX = $ ground_w-$ w;
- $ PosY = ($ ground_h-$ h)/2;
- Break;
- Case 7: // 7 is left at the bottom
- $ PosX = 0;
- $ PosY = $ ground_h-$ h;
- Break;
- Case 8: // 8 is centered at the bottom
- $ PosX = ($ ground_w-$ w)/2;
- $ PosY = $ ground_h-$ h;
- Break;
- Case 9: // 9: 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 mixed color mode of the image
- Imagealphablending ($ ground_im, true );
- If ($ isWaterImage) // image watermark
- {
- Imagecopy ($ ground_im, $ water_im, $ posX, $ posY, 0, 0, $ water_w, $ water_h); // Copy the watermark to the 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 the watermark is generated
- @ Unlink ($ groundImage );
- Switch ($ ground_info [2]) // Obtain the background image format
- {
- 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 the 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
";
- }
- }
- ?>
|