Home > Backend Development > PHP Tutorial > PHP code to add Chinese watermark to pictures

PHP code to add Chinese watermark to pictures

WBOY
Release: 2016-07-25 09:08:09
Original
900 people have browsed it
  1. Header("Content-type: image/png"); /*Notify the browser that an image is to be output*/
  2. $im = imagecreate(400, 300); /*Define the image Size*/
  3. $gray = ImageColorAllocate($im, 235, 235, 235);
  4. $pink = ImageColorAllocate($im, 255, 128, 255);
  5. $fontfile = "simkai.ttf";
  6. /* $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*/
  7. $str = iconv('GB2312','UTF-8','Chinese watermark'); /*Convert gb2312 character set to UTF-8 characters*/
  8. ImageTTFText($im, 30, 0, 100, 200, $pink, $fontfile, $str);
  9. /* Add Chinese watermark*/
  10. Imagepng($im);
  11. ImageDestroy($im);
  12. ?>
Copy code

Example 2:

  1. // ----------------------- //
  2. // Function: Add text to pictures
  3. // Parameters: $img image file name
  4. // $new_img Save image file name, if empty means not to save the image
  5. // $text string content
  6. // text_size string size
  7. // text_angle font string output angle
  8. / / text_x string output x coordinate
  9. // text_y string output y coordinate
  10. // $text_font font file name
  11. // $r, $g, $b string color RGB value
  12. // ------ ------------------- //
  13. function img_text($img, $new_img, $text, $text_size, $text_angle, $text_x, $text_y, $text_font, $ r, $g, $b){
  14. $text=iconv("gb2312","UTF-8",$text);
  15. Header("Content-type: image/gif");
  16. $im = @imagecreatefromstring( file_get_contents($img)) or die ("Failed to open image!");
  17. $color = ImageColorAllocate($im, $r,$g,$b);
  18. //ImageTTFText(int im, int size, int angle, int x, int y, int col, string fontfile, string text):
  19. //This function writes TTF (TrueType Fonts) font text into the image.
  20. //Parameters: size is the size of the font;
  21. // 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;
  22. // The two parameters x and y are the coordinate values ​​of the text (the origin is the upper left corner);
  23. // col is the color of the text;
  24. // fontfile is the font file name;
  25. // text is the string content.
  26. ImageTTFText($im, $text_size, $text_angle, $text_x, $text_y, $color, $text_font, $text);
  27. if ($new_img==""):
  28. ImageGif($im); // Do not save Picture, only displayed
  29. else:
  30. ImageGif($im,$new_img); //Save the picture, but not displayed
  31. endif;
  32. ImageDestroy($im); //End the graphic and release memory space
  33. }
  34. ?>
Copy code

Example 3:

  1. /*
  2. * Function: PHP image watermark (watermark supports images or text)
  3. * Parameters:
  4. * $groundImage background image, that is, the image that needs to be watermarked, currently only supports GIF, JPG , PNG format;
  5. * $waterPos watermark position, there are 10 states, 0 is a random position;
  6. * 1 is top left, 2 is top center, 3 is top right;
  7. * 4 is middle left, 5 is middle center. , 6 means the middle is on the right;
  8. * 7 is on the bottom on the left, 8 is on the bottom in the center, 9 is on the bottom on the right;
  9. * $waterImage image watermark, that is, the image used as the watermark, currently only supports GIF, JPG, and PNG formats ;
  10. * $waterText text watermark, that is, text is used as a watermark, supports ASCII code, does not support Chinese;
  11. * $textFont text size, the value is 1, 2, 3, 4 or 5, the default is 5;
  12. * $textColor Text color, the value is a hexadecimal color value, the default is #FF0000 (red);
  13. *
  14. * Note: Support GD 2.0, Support FreeType, GIF Read, GIF Create, JPG, PNG
  15. * $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.
  16. * When $waterImage is valid, the parameters $waterString, $stringFont, and $stringColor are not valid.
  17. * The file name of the watermarked image is the same as $groundImage.
  18. * Author: longware @ 2004-11-3 14:15:13
  19. */
  20. function imageWaterMark($groundImage,$waterPos=0,$waterImage=”",$waterText=””,$textFont=5,$textColor =”#FF0000″)
  21. {
  22. $isWaterImage = FALSE;
  23. $formatMsg = “This file format is not supported yet. Please use image processing software to convert the image to GIF, JPG, or PNG format.”;
  24. //Read watermark file
  25. if(!emptyempty($waterImage) && file_exists($waterImage))
  26. {
  27. $isWaterImage = TRUE;
  28. $water_info = getimagesize($waterImage);
  29. $water_w = $water_info[ 0];//Get the width of the watermark image
  30. $water_h = $water_info[1];//Get the height of the watermark image
  31. switch($water_info[2])//Get the format of the watermark image
  32. {
  33. case 1:$ water_im = imagecreatefromgif($waterImage);break;
  34. case 2:$water_im = imagecreatefromjpeg($waterImage);break;
  35. case 3:$water_im = imagecreatefrompng($waterImage);break;
  36. default:die($formatMsg);
  37. }
  38. }
  39. //Read the background image
  40. if(!emptyempty($groundImage) && file_exists($groundImage))
  41. {
  42. $ground_info = getimagesize($groundImage);
  43. $ground_w = $ground_info[0];// Get the width of the background image
  44. $ground_h = $ground_info[1];//Get the height of the background image
  45. switch($ground_info[2])//Get the format of the background image
  46. {
  47. case 1:$ground_im = imagecreatefromgif($ groundImage);break;
  48. case 2:$ground_im = imagecreatefromjpeg($groundImage);break;
  49. case 3:$ground_im = imagecreatefrompng($groundImage);break;
  50. default:die($formatMsg);
  51. }
  52. }
  53. else
  54. {
  55. die("The picture that needs to be watermarked does not exist!");
  56. }
  57. //Watermark location
  58. if($isWaterImage)//Picture watermark
  59. {
  60. $w = $water_w;
  61. $h = $water_h;
  62. $label = "Picture";
  63. }
  64. else//Text watermark
  65. {
  66. $temp = imagettfbbox(ceil($textFont*5),0,"./cour.ttf",$waterText);//Get The range of text using TrueType fonts
  67. $w = $temp[2] - $temp[6];
  68. $h = $temp[3] - $temp[7];
  69. unset($temp);
  70. $label = "Text area";
  71. }
  72. if( ($ground_w<$w) || ($ground_h<$h) )
  73. {
  74. echo "The length or width of the image that needs to be watermarked is longer than the watermark ".$label." Small, unable to generate watermark! ”;
  75. return;
  76. }
  77. switch($waterPos)
  78. {
  79. case 0://random
  80. $posX = rand(0,($ground_w - $w));
  81. $posY = rand(0,($ground_h - $h));
  82. break;
  83. case 1://1 means top left
  84. $posX = 0;
  85. $posY = 0;
  86. break;
  87. case 2://2 means top center
  88. $posX = ($ ground_w - $w) / 2;
  89. $posY = 0;
  90. break;
  91. case 3://3 is top right
  92. $posX = $ground_w - $w;
  93. $posY = 0;
  94. break;
  95. case 4 ://4 means center left
  96. $posX = 0;
  97. $posY = ($ground_h - $h) / 2;
  98. break;
  99. case 5://5 means center center
  100. $posX = ($ground_w - $w ) / 2;
  101. $posY = ($ground_h - $h) / 2;
  102. break;
  103. case 6://6 is the middle right
  104. $posX = $ground_w - $w;
  105. $posY = ($ground_h - $h) / 2;
  106. break;
  107. case 7://7 means the bottom is on the left
  108. $posX = 0;
  109. $posY = $ground_h - $h;
  110. break;
  111. case 8://8 means the bottom is in the center
  112. $posX = ($ground_w - $w) / 2;
  113. $posY = $ground_h - $h;
  114. break;
  115. case 9://9 is bottom right
  116. $posX = $ground_w - $w;
  117. $posY = $ground_h - $h;
  118. break;
  119. default://random
  120. $posX = rand(0,($ground_w - $w));
  121. $posY = rand(0,($ground_h - $h) );
  122. break;
  123. }
  124. //Set the image blending mode
  125. imagealphablending($ground_im, true);
  126. if($isWaterImage)//Image watermark
  127. {
  128. imagecopy($ground_im, $water_im, $posX, $ posY, 0, 0, $water_w,$water_h);//Copy watermark to target file
  129. }
  130. else//Text watermark
  131. {
  132. if( !emptyempty($textColor) && (strlen($textColor)==7) )
  133. {
  134. $R = hexdec(substr($textColor,1,2));
  135. $G = hexdec(substr($textColor,3,2));
  136. $B = hexdec(substr($textColor,5) );
  137. }
  138. else
  139. {
  140. die("The watermark text color format is incorrect!”);
  141. }
  142. imagestring ( $ground_im, $textFont, $posX, $posY, $waterText, imagecolorallocate($ground_im, $R, $G, $B));
  143. }
  144. //生成水印后的图片
  145. @unlink($groundImage);
  146. switch($ground_info[2])//取得背景图片的格式
  147. {
  148. case 1:imagegif($ground_im,$groundImage);break;
  149. case 2:imagejpeg($ground_im,$groundImage);break;
  150. case 3:imagepng($ground_im,$groundImage);break;
  151. default:die($errorMsg);
  152. }
  153. //释放内存
  154. if(isset($water_info)) unset($water_info);
  155. if(isset($water_im)) imagedestroy($water_im);
  156. unset($ground_info);
  157. imagedestroy($ground_im);
  158. }
  159. //—————————————————————————————
  160. $id=$_REQUEST['id'];
  161. $num = count($_FILES['userfile']['name']);
  162. print_r($_FILES['userfile']);
  163. print_r($_FILES['userfile']['name']);
  164. echo $num;
  165. echo “
    ”;
  166. if(isset($id)){
  167. for($i=0;$i<$id;$i++){
  168. if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size']>0)
  169. {
  170. $uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];
  171. echo “
    ”;
  172. echo $uploadfile;
  173. if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))
  174. {
  175. echo “OK
    ”;
  176. //文字水印
  177. //imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc“);
  178. //图片水印
  179. $waterImage=”logo_ok1.gif”;//水印图片路径
  180. imageWaterMark($uploadfile,9,$waterImage);
  181. echo “”;
  182. }
  183. else
  184. {
  185. echo “Fail
    ”;
  186. }
  187. }
  188. }
  189. }
  190. ?>
  191. for($a=0;$a<$id;$a++){
  192. echo “文件:
    ”;
  193. }
  194. ?>
复制代码

Example 4, add Chinese watermark:

  1. /*--------------

  2. **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
  3. **Note: 1. Requires gd library support and iconv support (php5 already includes it and does not need to be loaded)
  4. 2. Only suitable for three types of pictures, jpg/jpeg/gif /png, other types are not processed
  5. 3. Note that the attributes of the directory where the image is located must be writable
  6. 4. Calling example:
  7. $objImg = new MyWaterDownChinese();
  8. $objImg->Path = "images/";
  9. $objImg ->FileName = "1.jpg";
  10. $objImg->Text = "HAHAKONGJIAN[url]HTTP://HI.BAIDU.COM/LYSONCN[/url]";
  11. $objImg->Font = " ./font/simhei.ttf";
  12. $objImg->Run();
  13. **Member function:
  14. -------------*/
  15. class MyWaterDownChinese{
  16. var $Path = "./"; //The relative path of the directory where the picture is located relative to the page that calls this class
  17. var $FileName = ""; //The name of the picture, such as "1.jpg"
  18. var $Text = ""; // The watermark text to be added to the picture supports Chinese
  19. var $TextColor = "#ffffff"; //The color of the text. For gif pictures, the font color can only be black
  20. var $TextBgColor = "#000000"; //The color of the text Color of the background bar
  21. var $Font = "c://windows//fonts//simhei.ttf"; //Font storage directory, relative path
  22. 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"
  23. var $BaseWidth = 200; //The width of the image must be at least >=200 , the watermark text will be added.
  24. //----------------
  25. //Function: Class constructor (php5.0 or above)
  26. //Parameters: None
  27. //Return: None
  28. function __construct(){;}
  29. //---------------
  30. //Function: Class destructor (php5.0 or above)
  31. //Parameters: None
  32. / /Return: None
  33. function __destruct(){;}
  34. //-------------

  35. //Function: Run the function on the object and add it to the picture Watermark

  36. //Parameters: None
  37. //Return: None
  38. function Run()
  39. {
  40. if($this->FileName == "" || $this->Text == "")
  41. return;
  42. //Check whether the GD library is installed
  43. if(false == function_exists("gd_info"))
  44. {
  45. echo "The system does not have the GD library installed, so watermarks cannot be added to images.";
  46. return;
  47. }
  48. //Set input, Output image path name
  49. $arr_in_name = explode(".",$this->FileName);
  50. //
  51. $inImg = $this->Path.$this->FileName;
  52. $outImg = $inImg;
  53. $tmpImg = $this->Path.$arr_in_name[0]."_tmp.".$arr_in_name[1]; //Temporarily processed pictures, very important
  54. if(!$this->OverFlag)
  55. $ outImg = $this->Path.$arr_in_name[0]."_water_down.".$arr_in_name[1];
  56. //Check whether the image exists
  57. if(!file_exists($inImg))
  58. return ;
  59. //Get Image properties
  60. $groundImageType = @getimagesize($inImg);
  61. $imgWidth = $groundImageType[0];
  62. $imgHeight = $groundImageType[1];
  63. $imgType = $groundImageType[2];
  64. if($imgWidth < ; $this->BaseWidth) //If it is smaller than the basic width, it will not be processed
  65. return;
  66. //When the image is not jpg/jpeg/gif/png, it will not be processed
  67. switch($imgType)
  68. {
  69. case 1:
  70. $image = imagecreatefromgif($inImg);
  71. $this->TextBgColor = "#ffffff"; //The font of the gif image can only be black, so the background color is set to white
  72. break;
  73. case 2:
  74. $image = imagecreatefromjpeg( $inImg);
  75. break;
  76. case 3:
  77. $image = imagecreatefrompng($inImg);
  78. break;
  79. default:
  80. return;
  81. break;
  82. }
  83. //Create color
  84. $color = @imagecolorallocate($image, hexdec(substr($this->TextColor,1,2)),hexdec(substr($this->TextColor,3,2)),hexdec(substr($this->TextColor,5,2)) ); //Text color
  85. //Generate an empty image, its height is increased by the watermark height at the bottom
  86. $newHeight = $imgHeight+20;
  87. $objTmpImg = @imagecreatetruecolor($imgWidth,$newHeight);
  88. $colorBg = @imagecolorallocate($objTmpImg,hexdec(substr($this->TextBgColor,1,2)),hexdec(substr($this->TextBgColor,3,2)),hexdec(substr($this->TextBgColor ,5,2))); //Background color
  89. //Fill the background color of the image
  90. @imagefill ($objTmpImg,0,0,$colorBg);
  91. //Copy the original image to the temporary image
  92. @imagecopy( $objTmpImg,$image,0,0,0,0,$imgWidth,$imgHeight);
  93. //Create a watermark text object to be written
  94. $objText = $this->createText($this->Text) ;
  95. //Calculate the position of the watermark text to be written
  96. $x = 5;
  97. $y = $newHeight-5;
  98. //Write the text watermark
  99. @imagettftext($objTmpImg,10,0,$x,$ y,$color,$this->Font,$objText);
  100. //Generate new pictures, temporary pictures
  101. switch($imgType)
  102. {
  103. case 1:
  104. imagegif($objTmpImg,$tmpImg);
  105. break ;
  106. case 2:
  107. imagejpeg($objTmpImg,$tmpImg);
  108. break;
  109. case 3:
  110. imagepng($objTmpImg,$tmpImg);
  111. break;
  112. default:
  113. return;
  114. break;
  115. }
  116. //release Resources
  117. @imagedestroy($objTmpImg);
  118. @imagedestroy($image);
  119. //Rename the file
  120. if($this->OverFlag)
  121. {
  122. //Overwrite the original image
  123. @unlink($inImg);
  124. @rename($tmpImg,$outImg);
  125. }
  126. else
  127. {
  128. //Do not overwrite the original image
  129. @rename($tmpImg,$outImg);
  130. }
  131. }
  132. //------
  133. / /Function: Create watermark text object
  134. //Parameters: None
  135. //Return: Created watermark text object
  136. function createText($instring)
  137. {
  138. $outstring="";
  139. $max=strlen($instring);
  140. for($i=0;$i<$max;$i++)
  141. {
  142. $h=ord($instring[$i]);
  143. if($h>=160 && $i<$max-1)
  144. {
  145. $outstring .= "&#".base_convert(bin2hex(iconv("gb2312","ucs-2",substr($instring,$i,2))),16,10).";";
  146. $i++;
  147. }
  148. else
  149. {
  150. $outstring .= $instring[$i];
  151. }
  152. }
  153. return $outstring;
  154. }
  155. }//class
  156. ?>

Copy code



source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template