The fusion of jpge images and png images is actually the watermark technology that everyone is familiar with. The most important sentence in the code below is:
//Set the color blending mode of the image imagealphablending($ground_im, true);
- /*
- * Function: PHP image watermark (watermark supports images or text)
- * Parameters:
- * $groundImage background image, that is, the image that needs to be watermarked, currently only supports GIF, JPG, PNG format;
- * $waterPos watermark position, there are 10 states, 0 is a random position;
- * 1 is the top left, 2 is the top center, 3 is the top right;
- * 4 is the middle left, 5 is the middle center, 6 means the middle is on the right;
- * 7 is on the bottom on the left, 8 is on the bottom in the center, 9 is on the bottom on the right;
- * $waterImage image watermark, that is, the image used as the watermark, currently only supports GIF, JPG, and PNG formats;
- * $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
- * $waterImage and $waterText are best Don't use them 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")
- //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? Chenbaji?
- 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*5),0,"./cour.ttf",$waterText);/ /Get the 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 greater than the watermark".$label. "It's too young to generate a watermark! ";
- return;
- }
- switch($waterPos)
- {
- case 0://random
- $posX = rand(0,($ground_w - $w));
- $posY = rand(0,($ground_h - $h));
- break;
- case 1://1 is top left
- $posX = 0;
- $posY = 0;
- break;
- case 2://2 is 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 center 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 color mixing 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 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);
- }
- $uploadfile="your_picture.jpg"; //Background image to be processed Position
- $waterImage="Hat.png"; //Transparent image position
- imageWaterMark($uploadfile,9,$waterImage);
- //Displayed on the web
- echo "";
- ?>
-
Copy code
|