Home  >  Article  >  Backend Development  >  Code sharing for adding Chinese watermark to php images_PHP tutorial

Code sharing for adding Chinese watermark to php images_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:15:13834browse

Example 1

Copy code The code is as follows:

Header("Content-type : image/png"); /*Notify the browser that an image is to be output*/
$im = imagecreate(400, 300); /*Define the size of the image*/
$gray = ImageColorAllocate($im, 235, 235, 235);
$pink = ImageColorAllocate($im, 255, 128, 255);
$fontfile = "simkai.ttf";
/* $fontfile font path, depending on the operation Depends on the system, it can be simhei.ttf (Helvetica), SIMKAI.TTF (Italic), SIMFANG.TTF (Imitation Song Dynasty), SIMSUN.TTC (Song Dynasty & New Song Dynasty) 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);
?>

Example 2
Copy code The code is as follows:

// **** ************************************ //
// 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 name of the font file;
/ /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 the image, only display
else:
ImageGif($im,$new_img); // Save the image, but do not display it
endif;
ImageDestroy($im); / /End graphics, release memory space
}
?>

Example 3
Copy code The code is as follows :

/*
* Function: PHP image watermark (watermark supports images or text)
* Parameters:
* $groundImage background image, which needs to be watermarked Pictures currently only support GIF, JPG, and PNG formats;
* $waterPos watermark position, there are 10 states, 0 is a random position;
* 1 is top left, 2 is top center, 3 is top center Right;
* 4 means the middle is on the left, 5 means the middle is in the middle, 6 is the middle is on the right;
* 7 is the bottom is on the left, 8 is the bottom is in the center, 9 is the bottom is on the right;
* $ waterImage image watermark, that is, pictures used as watermarks, currently only supports GIF, JPG, 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
* It is best not to use $waterImage and $waterText at the same time. Just choose one of them, and use $waterImage first.
* When $waterImage is valid, the parameters $waterString, $stringFont, and $stringColor will not take effect.
* 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 or JPG. , 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 position
if($isWaterImage)//Picture watermark
{
$w = $water_w;
$h = $water_h;
$label = "Image";
}
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 smaller than the watermark ".$label.", so 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 top left
$posX = 0;
$posY = 0;
break;
case 2://2 is top-centered
$posX = ($ground_w - $w) / 2;
$posY = 0;
break;
case 3://3 is the top right
$posX = $ground_w - $w;
$posY = 0;
break;
case 4://4 is the middle left
$posX = 0;
$posY = ($ground_h - $h) / 2;
break;
case 5://5 is centered in the middle
$posX = ($ground_w - $w) / 2;
$posY = ($ground_h - $h) / 2;
break;
case 6://6 is middle right
$posX = $ground_w - $ w;
$posY = ($ground_h - $h) / 2;
break;
case 7://7 is bottom left
$posX = 0;
$posY = $ground_h - $h;
break;
case 8://8 is bottom centered
$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 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 “文件:
”;
}
?>



代码4
复制代码 代码如下:

Add Chinese watermark
/*----------------------------- --------------------------------
**Description: This is used to add a bottom watermark to the specified image ( A custom class that does not occupy the picture display area), you need to create an object and call it Library support, iconv support is required (php5 is already included and does not need to be loaded)
2. Only suitable for three types of images, 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"; //Color of text background bar
var $Font = "c://windows//fonts//simhei.ttf"; //Font storage directory, relative path
var $OverFlag = true; //Whether to overwrite the original image, the default is to overwrite. When not overwriting, it will 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 before watermark text will be added.
//--------------------------------------------- ---------------------
//Function: Class constructor (php5.0 or above)
//Parameters: None
//Return: None
function __construct(){;}
//----------------------------- -------------------------------------
//Function: destructor of class ( php5.0 or above)
//Parameters: None
//Return: None
function __destruct(){;}
//------------ -------------------------------------------------- ----
//------------------------------------
// Function: Run the function on the object and add watermark to the picture
//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 and cannot add watermarks to images.";
return;
}
//Set the input and output image path names
$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 the attributes of the image
$groundImageType = @getimagesize($inImg);
$imgWidth = $groundImageType[0];
$imgHeight = $groundImageType[1];
$imgType = $groundImageType[2];
if($imgWidth < $this->BaseWidth) //If it is less than the basic width, it will not be processed
return;
//The picture is not jpg/jpeg/ When gif/png is used,
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 the 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 text watermark
@imagettftext($objTmpImg,10,0,$x,$y,$color,$this->Font, $objText);
//Generate new images, temporary images
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 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: The 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
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/326177.htmlTechArticleExample 1 Copy the code as follows: ?php Header("Content-type: image/png"); /* Notify the browser that an image is to be output*/ $im = imagecreate(400, 300); /*Define the size of the image*/ $gray = ImageCol...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn