Php image and Chinese watermark implementation code

Source: Internet
Author: User

In php, adding watermarks to Chinese characters requires some simple processing. One is to convert characters into gbk, and the other is to load Chinese fonts, with these two conditions, adding a Chinese watermark to the image is simple.

Example 1

The Code is as follows: Copy code

<? Php
Header ("Content-type: image/png");/* notify the browser to output the image */
$ Im = imagecreate (400,300);/* define the image size */
$ Gray = ImageColorAllocate ($ im, 235,235,235 );
$ Pink = ImageColorAllocate ($ im, 255,128,255 );

$ Fontfile = "simkai. ttf ";

/* $ Fontfile font path, depending on the operating system, can be simhei. ttf (), SIMKAI. TTF (entity body), SIMFANG. TTF (Imitation Song), SIMSUN. chinese fonts supported by GD, such as TTC (& */
$ Str = iconv ('gb2312', 'utf-8', 'Chinese watermark');/* convert the GB2312 character set to the character set of the UTF-8 */
ImageTTFText ($ im, 30, 0,100,200, $ pink, $ fontfile, $ str );
/* Add a Chinese watermark */
Imagepng ($ im );
ImageDestroy ($ im );
?>

Example 2

The Code is as follows: Copy code

<? Php
//************************************** **//
// Function: add text to the image
// Parameter: $ img Image File Name
// $ New_img saves another image file name. If it is null, it means no other image is saved.
// $ Text string content
// Text_size string size
// Text_angle font string output Angle
// Output x coordinate of text_x string
// Output y coordinate from text_y string
// $ Text_font-shaped 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 ("opening the image failed! ");
$ 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) text to an image.
// Parameter: The size is the font size;
// Angle is the font angle, which is calculated clockwise. 0 degrees is horizontal (from left to right), and 90 degrees is the bottom-to-top text;
// The x and y parameters are the coordinate values of the text (the origin is the upper left corner );
// Col indicates the color of the word;
// 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 the image, only show
Else:
ImageGif ($ im, $ new_img); // Save the image but it is not displayed
Endif;

ImageDestroy ($ im); // ends the image and releases the memory space.
}
?>

Example 3

 

The Code is as follows: Copy code

<? Php
/*
* 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 );
*
* 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 (! Emptyempty ($ 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 (! Emptyempty ($ 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 * 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 watermarked 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 (! Emptyempty ($ textColor) & (strlen ($ textColor) = 7 ))
{
$ R = hexdec (substr ($ textColor, 1, 2 ));
$ G = hexdec (substr ($ textColor, 3, 2 ));
$ B = hexdec (substr ($ textColor, 5 ));
}
Else
{
Die ("Incorrect watermark text color format !");
}
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 );
}
//-----------------------------
$ Id = $ _ REQUEST ['id'];
$ Num = count ($ _ FILES ['userfile'] ['name']);
Print_r ($ _ FILES ['userfile']);
Print_r ($ _ FILES ['userfile'] ['name']);

Echo $ num;
Echo "<bR> ";
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 "<br> ";
Echo $ uploadfile;
If (copy ($ _ FILES ['userfile'] ['tmp _ name'] [$ I], $ uploadfile ))
{
Echo "OK <br> ";

// Text watermark
// ImageWaterMark ($ uploadfile, 5, "", "HTTP: // www.lvye.info", 5, "# cccccc");

// Image Watermark
Watermark waterimage##logo_ok1.gif "; // watermark image path
ImageWaterMark ($ uploadfile, 9, $ waterImage );

Echo " ";
}
Else
{
Echo "Fail <br> ";
}
}
}
}

?>
<Form enctype = "multipart/form-data" method = "POST">
<? Php
For ($ a = 0; $ a <$ id; $ a ++ ){
Echo "file: <input name =" userfile [] "type =" file "> <br> ";

}
?>
<Input type = "submit" value = "Upload">
</Form>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.