Header("Content-type: image/png"); /*Notify the browser that an image is to be output*/ $im = imagecreate(400, 300); /*Define the image Size*/ $gray = ImageColorAllocate($im, 235, 235, 235); $pink = ImageColorAllocate($im, 255, 128, 255); $fontfile = "simkai.ttf"; /* $fontfile The path of the font, depending on the operating system, can be simhei.ttf (Heold), SIMKAI.TTF (Italic), SIMFANG.TTF (Imitation Song), SIMSUN.TTC (Song style & New Song style) and other Chinese fonts supported by GD*/ $str = iconv('GB2312','UTF-8','Chinese watermark'); /*Convert gb2312 character set to UTF-8 characters*/ ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str); /* Add Chinese watermark*/ Imagepng($im); ImageDestroy($im); ?>
Copy code
Example 2:
// ----------------------- // // Function: Add text to pictures // Parameters: $img image file name // $new_img Save image file name, if empty means not to save the image // $text string content // text_size string size // text_angle font string output angle / / text_x string output x coordinate // text_y string output y coordinate // $text_font font file name // $r, $g, $b string color RGB value // ------ ------------------- // function img_text($img, $new_img, $text, $text_size, $text_angle, $text_x, $text_y, $text_font, $ r, $g, $b){ $text=iconv("gb2312","UTF-8",$text); Header("Content-type: image/gif"); $im = @imagecreatefromstring( file_get_contents($img)) or die ("Failed to open image!"); $color = ImageColorAllocate($im, $r,$g,$b); //ImageTTFText(int im, int size, int angle, int x, int y, int col, string fontfile, string text): //This function writes TTF (TrueType Fonts) font text into the image. //Parameters: size is the size of the font; // angle is the angle of the font, calculated clockwise, 0 degrees is horizontal (from left to right), 90 degrees is the text from bottom to top; // The two parameters x and y are the coordinate values of the text (the origin is the upper left corner); // col is the color of the text; // fontfile is the font file name; // text is the string content. ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text); if ($new_img==""): ImageGif($im); // Do not save Picture, only displayed else: ImageGif($im,$new_img); //Save the picture, but not displayed endif; ImageDestroy($im); //End the graphic and release memory space } ?>
Copy code
Example 3:
/* * 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 top left, 2 is top center, 3 is top right; * 4 is middle left, 5 is 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 the most It is best not to 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″) { $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(!emptyempty($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(!emptyempty($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*5),0,"./cour.ttf",$waterText);//Get The range of text using 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 image that needs to be watermarked is longer than the watermark ".$label." 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 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( !emptyempty($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)); } //生成水印后的图片 @unlink($groundImage); switch($ground_info[2])//取得背景图片的格式 { case 1:imagegif($ground_im,$groundImage);break; case 2:imagejpeg($ground_im,$groundImage);break; case 3:imagepng($ground_im,$groundImage);break; default:die($errorMsg); } //释放内存 if(isset($water_info)) unset($water_info); if(isset($water_im)) imagedestroy($water_im); unset($ground_info); imagedestroy($ground_im); } //————————————————————————————— $id=$_REQUEST['id']; $num = count($_FILES['userfile']['name']); print_r($_FILES['userfile']); print_r($_FILES['userfile']['name']); echo $num; echo “ ”;
if(isset($id)){
for($i=0;$i<$id;$i++){ if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size']>0)
{
$uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];
echo “ ”;
echo $uploadfile;
if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
{
echo “OK ”;
//文字水印
//imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc“);
//图片水印
$waterImage=”logo_ok1.gif”;//水印图片路径
imageWaterMark($uploadfile,9,$waterImage);
echo “ ”;
}
else
{
echo “Fail ”;
}
}
}
}
?>
for($a=0;$a<$id;$a++){ echo “文件: ”;
}
?>
复制代码
Example 4, add Chinese watermark:
/*--------------
**Description: This is used to add a bottom watermark to the specified image (does not occupy the image display area), you need to create an object call **Note: 1. Requires gd library support and iconv support (php5 already includes it and does not need to be loaded) 2. Only suitable for three types of pictures, jpg/jpeg/gif /png, other types are not processed 3. Note that the attributes of the directory where the image is located must be writable 4. Calling example: $objImg = new MyWaterDownChinese(); $objImg->Path = "images/";
$objImg ->FileName = "1.jpg";
$objImg->Text = "HAHAKONGJIAN[url]HTTP://HI.BAIDU.COM/LYSONCN[/url]";
$objImg->Font = " ./font/simhei.ttf";
$objImg->Run();
**Member function:
-------------*/
class MyWaterDownChinese{
var $Path = "./"; //The relative path of the directory where the picture is located relative to the page that calls this class
var $FileName = ""; //The name of the picture, such as "1.jpg"
var $Text = ""; // The watermark text to be added to the picture supports Chinese
var $TextColor = "#ffffff"; //The color of the text. For gif pictures, the font color can only be black
var $TextBgColor = "#000000"; //The color of the text Color of the background bar
var $Font = "c://windows//fonts//simhei.ttf"; //Font storage directory, relative path
var $OverFlag = true; //Whether to overwrite the original image, default To overwrite, when not covering, automatically add "_water_down" after the original image file name, such as "1.jpg" => "1_water_down.jpg"
var $BaseWidth = 200; //The width of the image must be at least >=200 , the watermark text will be added.
//----------------
//Function: Class constructor (php5.0 or above)
//Parameters: None
//Return: None
function __construct(){;}
//---------------
//Function: Class destructor (php5.0 or above)
//Parameters: None
/ /Return: None
function __destruct(){;}
//-------------
//Function: Run the function on the object and add it to the picture Watermark
//Parameters: None
//Return: None
function Run()
{
if($this->FileName == "" || $this->Text == "")
return;
//Check whether the GD library is installed
if(false == function_exists("gd_info"))
{
echo "The system does not have the GD library installed, so watermarks cannot be added to images.";
return;
}
//Set input, Output image path name
$arr_in_name = explode(".",$this->FileName);
//
$inImg = $this->Path.$this->FileName;
$outImg = $inImg;
$tmpImg = $this->Path.$arr_in_name[0]."_tmp.".$arr_in_name[1]; //Temporarily processed pictures, very important
if(!$this->OverFlag)
$ outImg = $this->Path.$arr_in_name[0]."_water_down.".$arr_in_name[1];
//Check whether the image exists
if(!file_exists($inImg))
return ;
//Get Image properties
$groundImageType = @getimagesize($inImg);
$imgWidth = $groundImageType[0];
$imgHeight = $groundImageType[1];
$imgType = $groundImageType[2];
if($imgWidth < ; $this->BaseWidth) //If it is smaller than the basic width, it will not be processed
return;
//When the image is not jpg/jpeg/gif/png, it will not be processed
switch($imgType)
{
case 1:
$image = imagecreatefromgif($inImg);
$this->TextBgColor = "#ffffff"; //The font of the gif image can only be black, so the background color is set to white
break;
case 2:
$image = imagecreatefromjpeg( $inImg);
break;
case 3:
$image = imagecreatefrompng($inImg);
break;
default:
return;
break;
}
//Create color
$color = @imagecolorallocate($image, hexdec(substr($this->TextColor,1,2)),hexdec(substr($this->TextColor,3,2)),hexdec(substr($this->TextColor,5,2)) ); //Text color
//Generate an empty image, its height is increased by the watermark height at the bottom
$newHeight = $imgHeight+20;
$objTmpImg = @imagecreatetruecolor($imgWidth,$newHeight);
$colorBg = @imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)),hexdec(substr($this->TextBgColor,3,2)),hexdec(substr($this->TextBgColor ,5,2))); //Background color
//Fill the background color of the image
@imagefill ($objTmpImg,0,0,$colorBg);
//Copy the original image to the temporary image
@imagecopy( $objTmpImg,$image,0,0,0,0,$imgWidth,$imgHeight);
//Create a watermark text object to be written
$objText = $this->createText($this->Text) ;
//Calculate the position of the watermark text to be written
$x = 5;
$y = $newHeight-5;
//Write the text watermark
@imagettftext($objTmpImg,10,0,$x,$ y,$color,$this->Font,$objText);
//Generate new pictures, temporary pictures
switch($imgType)
{
case 1:
imagegif($objTmpImg,$tmpImg);
break ;
case 2:
imagejpeg($objTmpImg,$tmpImg);
break;
case 3:
imagepng($objTmpImg,$tmpImg);
break;
default:
return;
break;
}
//release Resources
@imagedestroy($objTmpImg);
@imagedestroy($image);
//Rename the file
if($this->OverFlag)
{
//Overwrite the original image
@unlink($inImg);
@rename($tmpImg,$outImg);
}
else
{
//Do not overwrite the original image
@rename($tmpImg,$outImg);
}
}
//------
/ /Function: Create watermark text object
//Parameters: None
//Return: Created watermark text object
function createText($instring)
{
$outstring="";
$max=strlen($instring);
for($i=0;$i<$max;$i++) { $h=ord($instring[$i]); if($h>=160 && $i<$max-1) { $outstring .= "".base_convert(bin2hex(iconv("gb2312","ucs-2",substr($instring,$i,2))),16,10).";"; $i++; } else { $outstring .= $instring[$i]; } } return $outstring; } }//class ?>
Copy code